Autor | Zpráva | ||
---|---|---|---|
peta Profil |
#1 · Zasláno: 20. 12. 2006, 15:09:10
jak nahradim funkci ROW_NUMBER(), ktera je pridana az od roku 2005 ?
Mam takovyto dotaz: $dotaz = "SELECT `id`, ROW_NUMBER() OVER (ORDER BY `voteAB`) AS `rowID` FROM $tab WHERE `question` LIKE '$find1%' LIMIT 1"; kde mi funkce ocisluje radky a pak vybere ten, kde je hodnota ce sloupsi question podobna $find1 (rekneme "pepa") Jako vysledek chci "cislo radku" podle serazeni a "id" radku s "pepa". A protoze to doma testuju na starsim SQL, tak bych potreboval nahrazku te funkce. Pripadne ani nevim, jestli mam ten dotaz dobre, kdyz to nemuzu testovat. |
||
peta Profil |
#2 · Zasláno: 20. 12. 2006, 20:43:48
Tak jsem objevil priklad na scitani radku, snad to dam nejak dohromady...
$dotaz = "SELECT (SELECT SUM(1) FROM $tab ORDER BY `voteAB`) AS `rowID`, `id` FROM $tab WHERE `question` LIKE '$find1%' LIMIT 1"; to mi vypise, ze mam 21 zaznamu, jako COUNT ; takze to nejak musim omezit a tak. |
||
souki Profil |
#3 · Zasláno: 20. 12. 2006, 20:46:08
jenom hádám, ale nešla by na to použít ta magická dočasná proměnná? viděl jsem to na http://mm.gene.cz/
|
||
medden Profil * |
#4 · Zasláno: 20. 12. 2006, 23:01:00
|
||
medden Profil * |
#5 · Zasláno: 20. 12. 2006, 23:01:58
alebo ešte skôr toto: http://xaprb.com/blog/2005/09/27/simulating-the-sql-row_number-functio n/
|
||
peta Profil |
#6 · Zasláno: 21. 12. 2006, 07:49:01
souki na gene to neni, tam je neco jineho.
V podstate to vyresim dvema tabulkami, jednou pomocnou $dotaz = "SELECT `id`,`rowID` FROM (SELECT `id`,`question`,SUM(1) AS `rowID` FROM $tab ORDER BY `voteAB` ASC,`question` ASC) WHERE `question` LIKE '$find1%' LIMIT 1"; Jen to neumim ted spojit, ale na to prijdu. medden Jj, to se da pouzit, jenom ja z toho jeste potrebuji vybrat hodnotu. V podstate stejny ucel pomocnych promennych plni to SUM(1). Dik. |
||
peta Profil |
#7 · Zasláno: 21. 12. 2006, 10:08:51 · Upravil/a: peta
tak 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')"; |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0