Autor | Zpráva | ||
---|---|---|---|
peta Profil |
#1 · Zasláno: 15. 12. 2006, 11:06:52
lze nejak zjistit poradi sloupce, kdyz jej vyberu podle ORDER BY?
Mam tabulku anket, kde mam sloupec "pocet hlasu" a ted si zobrazim na obrazovku treba udaje 20-40. To by bylo v poho, to nejak v PHP. Ale ted mam treba vyhledavani podle sloupce "jmeno", ze se chci podivat, jak na tom jsem s hodnocenim. Jsem treba 53. v poradi podle 'poctu hlasu". jak toto cislo zjistim? Respekt, chtel bych vypsat 40-60, stranku, kde jsem zobrazeny (a sebe zvyraznit, coz je PHP). Jak zjistim, ze jsem zrovna na strance 40-60? |
||
Kajman_ Profil * |
#2 · Zasláno: 15. 12. 2006, 12:15:33
Spočítáte počet řádků, které jsou po seřazení před tím kokrétním, a přičtete jedničku.
|
||
peta Profil |
#3 · Zasláno: 15. 12. 2006, 12:47:25
Kajman_
Hm, a jak? vyber radku: "SELECT * FROM $tab WHERE `name`='pepa' LIMIT 1" z toho dostanu treba $id a ted, jak to $id vyuzit pro to pocitani? rekneme, ze vypis vypada nejak takto: "SELECT * FROM $tab ORDER BY `skore` DESC LIMIT $a,$b" kde $a a $b bych chtel prave nastavit na tech 40-60, jenze nevim, kolikaty v poradi je zaznam $id. A jak teda zjistim to poradi? |
||
Kajman_ Profil * |
#4 · Zasláno: 15. 12. 2006, 14:11:04
select count(*) lepsich from $tab where `skore`>'$pepovoskore'
|
||
peta Profil |
#5 · Zasláno: 15. 12. 2006, 15:25:46 · Upravil/a: peta
Kajman_
Jej, jasne :) "SELECT * FROM $tab WHERE `name`='pepa' LIMIT 1" -> $id -> $skore "SELECT COUNT(*) FROM $tab WHERE `skore`>='$skore'" -> $pozice To tve lepsich moc nechapu, to bys musel rozepsat, ja bych pouzil toto. Dik. A ja premyslel, jestli na to neni nejaky spesl prikaz a toto je v podstate super. Takhle, kdybych chtel vypisovat cislo pozice pro kazdy z 20 radku, tak si ted musim udelat script, ktery mi nahore vezme prvni cislo a k tem ostatnim pricitam +1 (abych nezatezoval SQL) |
||
Hugo Profil |
#6 · Zasláno: 15. 12. 2006, 15:37:58
select count(*) lepsich from $tab where `skore`>'$pepovoskore'
se dá taky napsat jako select count(*) AS lepsich from $tab where `skore`>'$pepovoskore' Jde o tzv. alias, ve výsledku bude sloupec nazvan 'lepsich' misto 'count(*)' |
||
peta Profil |
#7 · Zasláno: 15. 12. 2006, 16:18:22
Dik, taky mne to napadlo, jen jsem si nebyl jist, zda to funguje i bez toho AS, takze jsem si pockam na vysvetleni zkusenejsich. Se proste drzim zapisu podle phpmyadmina, pokud to jde.
|
||
Časová prodleva: 5 dní
|
|||
peta Profil |
#8 · Zasláno: 20. 12. 2006, 12:51:22 · Upravil/a: peta
Nj, ale mato 1 chybu:
pepa ma skore=20 dalsich 30 lidi ma skore = 20, skore=19 a skore = 21 Jake presne poradi ma pepa? At uz > nebo >= to nerozlisi, ktery v poradi je pepa treba podle pridani do tabulky (ID) Ha, jasne, omezim to na nick!=pepa :) Nn, stale to neni ono, stale mi to vybere 29/30 stejnych hodnoceni a pepa muze byt na prvni strane. |
||
peta Profil |
#9 · Zasláno: 20. 12. 2006, 13:12:40 · Upravil/a: peta
nasel jsem ted toto:
12,9,9,9,8,8,7,6,5 Nyni muzeme pouzit nasledujici funkce: * ROW_NUMBER() OVER (ORDER BY Plat DESC) - je nejjednodussi a vrati 1,2,3,4,5,6,7,8,9 * RANK() OVER (ORDER BY Plat DESC) - vrati poradi jako 1,2,2,2,5,5,7,8,9 * DENSE_RANK() OVER (ORDER BY Plat DESC) - vrati poradi jako 1,2,2,2,3,3,4,5,6 * NTILE(3) OVER (ORDER BY Plat DESC) - rozdeli hrace do tri stejnych skupin podle prijmu, tudiz vrati 1,1,1,2,2,2,3,3,3 Coz je stejne. Hm, asi to budu muset dat do pomocne tabulky a pak jen vytahnu cislo ID radku. Teda prrr, mozna ROW_NUMBER, prostuduju. |
||
peta Profil |
#10 · Zasláno: 21. 12. 2006, 10:10:03
Tak myslim, ze to mam, 2 dotazy a je po problemu:
$dotaz = "SELECT * FROM $tab WHERE `question` LIKE '$find1%' LIMIT 1"; $score = $row['voteAB']; $word = $row['question']; $dotaz = "SELECT COUNT(*) AS `rowID` FROM $tab WHERE `voteAB`>'$score' OR (`voteAB`='$score' AND `question`<'$word')"; Stacilo jen spravne podminky |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0