Autor | Zpráva | ||
---|---|---|---|
Greeg Profil |
#1 · Zasláno: 23. 8. 2008, 18:44:06
narazil osm na prblém keď mi treba zistit pozíciu konktrétneho riadku v zotriedenom vypise z tabulky. o co ide... priklad: mam tabulku vysledkov sprintu: bezec - cas a chcem zistit na ktorom mieste dobehol konkretny bezec so svojim casom.
riesim to tak ze vyberiem vsetkych bezcov a potom nimi postupne prechadzam a hladam toho mojho... $r = mysql_query("SELECT bezec, cas FROM sprint") while($v = mysql_fetch_array($r)) { $i++; if ($v['bezec'] == "moj_bezec") $miesto = $i } je to fajn ked mam zakych 10 zaznamov ale pri 2K riadkovej tabulke je to blbost bazen do kopca. skusil som na to teda ist jednoduchsie "SELECT COUNT(bezec) FROM sprint WHERE cas< $bezcov_cas" to sa javi ako celkom rozumne a dokonca aj efektivne, ALE je tu jeden problem, na kazdom mieste sa moze umiestnit iba jeden hrac, a tak ked niekto dobehne v rovnakom case, vznika problem. viete mi niekto poradit este iny sposob ako sa k tomu dopracovat? |
||
Kcko Profil |
#2 · Zasláno: 23. 8. 2008, 18:48:39
|
||
Greeg Profil |
#3 · Zasláno: 24. 8. 2008, 11:27:16
parada parada, vrela vdaka ;)
|
||
Kajman_ Profil * |
#4 · Zasláno: 24. 8. 2008, 19:10:19
ALE je tu jeden problem, na kazdom mieste sa moze umiestnit iba jeden hrac, a tak ked niekto dobehne v rovnakom case, vznika problem
Tak tam přidáte podmínku na další řazení, třeba id_běžce, nebo tak něco... SELECT COUNT(bezec) poradi FROM sprint WHERE cas< $bezcov_cas or (cas=$bezcov_cas and id_bezce<=$id_hledaneho) |
||
Greeg Profil |
#5 · Zasláno: 25. 8. 2008, 00:41:44
> Kajman_ toto riesenie je este lepsie, aj ked trochu menej prehladne ked zacnu pribudat podmienky radenia, vdaka.
riesenie cez uzivatelske premenne je sice prehladne, no v php mysql_query nepodporuje multi-statement queries preto to treba rozdelit na 3 samostatne queries ktore dvihnu zataz na srv, tiez query counter (ktory je niektorych hostingoch pekne nizko) a myslim ze je aj o nieco narocnejsie na spracovanie (kedze sa v db musi prelistovat k pozadovanemu riadku, ktory je ako naschval vzdy na konci :P). |
||
Časová prodleva: 16 let
|
0