ORDER BY sarindot datu izvadi pec mainigas vertibas
#1
Posted 2008.09.16 18:02
Luudzu paliidziet uzraxtiit kveriju.
SELECT vards, prognoze FROM dalibnieki, speles
WHERE speles_rezultats='$result'
ORDER BY ?????????? DESC LIMIT 10
#2
Posted 2008.09.16 18:42
MBS Axapta Certified
--
[url="http://delfins.id.lv"]http://delfins.id.lv[/url]
.... ....... _ o
... ... .. _\ \>
.... ....(_)/(_)
#3
Posted 2008.09.16 18:44
Igors, on 16.09.2008 19:02, said:
Luudzu paliidziet uzraxtiit kveriju.
SELECT vards, prognoze FROM dalibnieki, speles
WHERE speles_rezultats='$result'
ORDER BY ?????????? DESC LIMIT 10
Varbuut ir kaads cits variants kaa sarindot?
#5
Posted 2008.09.16 19:06
Igors, on 16.09.2008 19:47, said:
prognozes 4:1, 4:2, 1:1, 6:2, 0:1
Vajadzeetu, lai sakaarto dilstoshaa seciibaa njemot veeraa rezultaatu: piem: 4:2, 4:1, 6:2, 1:1, 0:1
Algoritmu jau nu tā kā būtu forši tomēr definēt, kaut vai vārdiem jo arī šis piemērs nebūt nav acīmredzams. Piemēram, kāda prognoze ir labāka 4:1 vai 4:3? un 5:2 vai 3:2? un 2:2 vai 3:1?
Bet nu piņemot, ka Tu spēj sadalīt rezultātu divos laukos un prognozi divos laukos, tad kaut kas apmēram tāds:
Rezultāts a:b
Prognoze c:d
ORDER BY abs(a-c) + abs(b-d), kur ABS ir absolūtā vērtība, paskaties pats MySQL dokos kāda funkcija tam atbilst MySQLā. Pēc tam atkarībā no atbildēm uz maniem jautājumiem vari mēģināt kārtot kā nākošās izteiksmes.
Gints Plivna
http://datubazes.wordpress.com
#6
Posted 2008.09.16 19:29
Gints Plivna, on 16.09.2008 20:06, said:
Bet nu piņemot, ka Tu spēj sadalīt rezultātu divos laukos un prognozi divos laukos, tad kaut kas apmēram tāds:
Rezultāts a:b
Prognoze c:d
ORDER BY abs(a-c) + abs(b-d), kur ABS ir absolūtā vērtība, paskaties pats MySQL dokos kāda funkcija tam atbilst MySQLā. Pēc tam atkarībā no atbildēm uz maniem jautājumiem vari mēģināt kārtot kā nākošās izteiksmes.
Gints Plivna
http://datubazes.wordpress.com
Sadaliit diezvai sanaax, jo veertiibas tiek paarvietotas masiivaa un tabulaas glabaajas kaa viena veertiiba, vienaa laukaa. Vajag izveidot kveriju, lai funkcija ORDER BY izpildaas njemot veeraa $result.
#7
Posted 2008.09.16 19:58
Jādefinē arī veiksmīgākais variants
rezultāts: 2:2
varianti: 2:0 vai 1:3 ... abiem būs +2 nobīde, bet vienā variantā ir uzminēts cipars. kurš būs tuvāks? ... vispār iesaku glabāt atsevišķā laukā prognozes rezultātu (nobīde), lai nav katru reii jārēķina, un pie rezultāta uzzināšanas updeitot viņu (tas jādara vienreiz tikai)
MBS Axapta Certified
--
[url="http://delfins.id.lv"]http://delfins.id.lv[/url]
.... ....... _ o
... ... .. _\ \>
.... ....(_)/(_)
#8
Posted 2008.09.16 20:02
#9
Posted 2008.09.16 20:05
Gints Plivna
http://datubazes.wordpress.com
#10
Posted 2008.09.16 20:13
Igors, on 16.09.2008 21:02, said:
Var sakārtot pēc izteiksmes tā kā es tev to rādīju, kur izteiksmes rezultāts vai nu būs skaitlis un tad kārtos kā skaitļus (1, 2, ..., 10, 11) vai arī rezultāts būs simboliska vērtība un tad kārtos kā virkni (1, 10, 11, 2).
Tā izteiksme pēc būtības arī būs šķiet tas mainīgais, par ko tu raksti.
Gints Plivna
http://datubazes.wordpress.com
#11
Posted 2008.09.16 20:17
Gints Plivna, on 16.09.2008 21:05, said:
ja es rezultatu ievietotu masiivaa array(2:3) un izvadiitu to pa vajadziigajiem simboliem attieciigi array[0], kur izvads buutu '2' un array[2] buutu '3' un to pashu izdarot ar prognozi
un tad ievietotu kverijaa
Rezultāts a:b
Prognoze c:d
SELECT vards, prognoze
FROM dalibnieki
ORDER BY abs(array[0]-array2[0]) + abs(array[2]-array2[2])
Vai tas vareetu nostraadaat? Un ja var tad kaa lai noraadu izvadu dilstoshaa seciibaa?
#12
Posted 2008.09.16 21:03
Gints Plivna, on 16.09.2008 21:13, said:
Tā izteiksme pēc būtības arī būs šķiet tas mainīgais, par ko tu raksti.
Gints Plivna
http://datubazes.wordpress.com
Kas te ir nepareizi? Jo mainoties rezultaatam sakaartojums izvadee nemainaas.
<?php
$rez = array($result);
$prog = array($_POST[prognoze]);
$dalibn = mysql_query("SELECT d_vards, d_prognoze
FROM dalibnieki
WHERE klases_nr=$_SESSION[grupa]
ORDER BY abs('$rez[0][0]'-'$prog[0][0]') + abs('$rez[0][2]'-'$prog[0][2]')
DESC LIMIT 10");
$izvads == array($dalibn, MYSQL_ASSOC);
while($izvads = mysql_fetch_array($dalibn))
{
echo $izvads['d_vards'] . " " . $izvads['d_uzvards'] . " " . $izvads['d_prognoze'];
echo "<br />";
}
?>
#13
Posted 2008.09.16 22:20
mysql> create table dalibnieki (
-> vards varchar(10),
-> rezultats varchar(10));
Query OK, 0 rows affected (0.20 sec)
mysql> insert into dalibnieki values ('a', '1:1');
Query OK, 1 row affected (0.03 sec)
mysql> insert into dalibnieki values ('b', '4:2');
Query OK, 1 row affected (0.03 sec)
mysql> insert into dalibnieki values ('c', '3:2');
Query OK, 1 row affected (0.03 sec)
mysql> insert into dalibnieki values ('d', '4:1');
Query OK, 1 row affected (0.03 sec)
mysql> insert into dalibnieki values ('e', '6:2');
Query OK, 1 row affected (0.01 sec)Tātad pieņemam, ka rezultāts ir 4:2 un to kaut kā Tu ieselektē no kaut kurienes citurienes, Tev droši vien būs tabula (vai mainīgais php, whatever), man būs vienkārši konstante '4:2'
mysql> select vards, rezultats
-> from dalibnieki
-> order by
-> abs(substr(rezultats, 1, instr(rezultats, ':') -1) -
-> substr('4:2', 1, instr('4:2', ':') -1)) +
-> abs(substr(rezultats, instr(rezultats, ':') + 1) -
-> substr('4:2', instr('4:2', ':') + 1));
+-------+-----------+
| vards | rezultats |
+-------+-----------+
| b | 4:2 |
| c | 3:2 |
| d | 4:1 |
| e | 6:2 |
| a | 1:1 |
+-------+-----------+
5 rows in set (0.00 sec)Jā un kā jau iepriekš teica, pēc spēles rezultāta uzzināšanas to izteiksmes rezultātu, kas pie ORDER BY rēķinās katrai rindai, ir vērts izrēķināt tikai vienreiz un ielikt atsevišķā kolonā, pēc kuras tad veikt kārtošanu, lai katru reizi attēlojot datus izteiksme nav jārēķina no jauna.
Gints Plivna
http://datubazes.wordpress.com
This post has been edited by Gints Plivna: 2008.09.16 22:23
#14
Posted 2008.09.17 00:00
MBS Axapta Certified
--
[url="http://delfins.id.lv"]http://delfins.id.lv[/url]
.... ....... _ o
... ... .. _\ \>
.... ....(_)/(_)
#15
Posted 2008.09.17 09:53
Delfins, on 17.09.2008 01:00, said:
arī fakts.
Gints Plivna
http://datubazes.wordpress.com

Help











