Autor Zpráva
peta
Profil
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
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
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 *
Možno pomôže: http://xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/
medden
Profil *
alebo ešte skôr toto: http://xaprb.com/blog/2005/09/27/simulating-the-sql-row_number-functio n/
peta
Profil
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
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')";
Toto téma je uzamčeno. Odpověď nelze zaslat.

0