Igors Posted September 16, 2008 Report Share Posted September 16, 2008 Situacija ir tada: Notiek spele un tiek veiktas prognozes, speles beigas tiek izvadita tabula ar prognozem. Ka var sarindot prognozes no vistuvaakaas rezultatam? Luudzu paliidziet uzraxtiit kveriju. SELECT vards, prognoze FROM dalibnieki, speles WHERE speles_rezultats='$result' ORDER BY ?????????? DESC LIMIT 10 Link to comment Share on other sites More sharing options...
Delfins Posted September 16, 2008 Report Share Posted September 16, 2008 kas ir vistuvākais rezultāts? kas par spēli? un ko īsti satur lauki? Link to comment Share on other sites More sharing options...
Igors Posted September 16, 2008 Author Report Share Posted September 16, 2008 Situacija ir tada: Notiek spele un tiek veiktas prognozes, speles beigas tiek izvadita tabula ar prognozem. Ka var sarindot prognozes no vistuvaakaas rezultatam?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? Link to comment Share on other sites More sharing options...
Igors Posted September 16, 2008 Author Report Share Posted September 16, 2008 kas ir vistuvākais rezultāts? kas par spēli? un ko īsti satur lauki? Piemrream rezultaats ir 4:2 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 Link to comment Share on other sites More sharing options...
Gints Plivna Posted September 16, 2008 Report Share Posted September 16, 2008 Piemrream rezultaats ir 4:2 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 Link to comment Share on other sites More sharing options...
Igors Posted September 16, 2008 Author Report Share Posted September 16, 2008 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 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. Link to comment Share on other sites More sharing options...
Delfins Posted September 16, 2008 Report Share Posted September 16, 2008 a tu SADALI! Jo tā kā tu gribi nesanāks iekš mysql, vismaz cilvēcīgā veidā un efektīvi. 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) Link to comment Share on other sites More sharing options...
Igors Posted September 16, 2008 Author Report Share Posted September 16, 2008 Jautaajums ir taads: Vai ORDER BY var sakaartot veertiibas peec kaada mainiigaa? Vai tikai peec alfabeeta vai cipariem no 1 liidz n. Vai var sakaartot peec piem. 4:1 dilstoshaa seciibaa laukus, kur ieraxtiitaas veertiibas laukaa ir n:m, kur 'n' un 'm' mainaas no 1 liidz 99? Link to comment Share on other sites More sharing options...
Gints Plivna Posted September 16, 2008 Report Share Posted September 16, 2008 nuuu nelielas darbības ar stringiem un sadalīsi. Līdz kolam pirmā vērtība, pēc kola otrā vērtība. Oraclē es Tev uzrakstītu, MySQLā tas man prasa skatīšanos manuālī, tieši tāpat, kā es pieņemu, ir jādara Tev :) Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
Gints Plivna Posted September 16, 2008 Report Share Posted September 16, 2008 Jautaajums ir taads: Vai ORDER BY var sakaartot veertiibas peec kaada mainiigaa? Vai tikai peec alfabeeta vai cipariem no 1 liidz n. Vai var sakaartot peec piem. 4:1 dilstoshaa seciibaa laukus, kur ieraxtiitaas veertiibas laukaa ir n:m, kur 'n' un 'm' mainaas no 1 liidz 99? 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 Link to comment Share on other sites More sharing options...
Igors Posted September 16, 2008 Author Report Share Posted September 16, 2008 nuuu nelielas darbības ar stringiem un sadalīsi. Līdz kolam pirmā vērtība, pēc kola otrā vērtība. Oraclē es Tev uzrakstītu, MySQLā tas man prasa skatīšanos manuālī, tieši tāpat, kā es pieņemu, ir jādara Tev :) 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? Link to comment Share on other sites More sharing options...
Igors Posted September 16, 2008 Author Report Share Posted September 16, 2008 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 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 />"; } ?> Link to comment Share on other sites More sharing options...
Gints Plivna Posted September 16, 2008 Report Share Posted September 16, 2008 (edited) Man kaut kā īsti nav skaidrs ko tu tur centies izdarīt php kombinācijā ar MySQL :), bet te ir demonstrācija. 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 Edited September 16, 2008 by Gints Plivna Link to comment Share on other sites More sharing options...
Delfins Posted September 16, 2008 Report Share Posted September 16, 2008 tur jau tas joks, ka ja glabā ats. kolonnā, var ļaut visu izr''ekināt php pēc sava vēl gudrākā algoritma. Piefiksēt beigās tikai float tipa skaitli pēc kā kārtot. Link to comment Share on other sites More sharing options...
Gints Plivna Posted September 17, 2008 Report Share Posted September 17, 2008 var ļaut visu izr''ekināt php pēc sava vēl gudrākā algoritma. arī fakts. Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
Recommended Posts