Autor | Zpráva | ||
---|---|---|---|
mazlo Profil |
#1 · Zasláno: 14. 11. 2007, 18:48:29
Ahoj, potřebuju poradit, jak udělat v mysql dotaz na následující či předchozí záznam.
Vzpoměl jsem si na Pascal a jeho funkce Pred( ) a Succ() - i když ty fungují jen u ordinálních typů :-) Potřebobal bych asi něco takového (když by teda funkce pred() existovala): SELECT * FROM tabulka WHERE pred(sloupec) = $hodnota ORDER by sloupec --------------------------- Když by byl sloupec typu INT a auto increment, tak by stačilo v PHP odečíst nebo přičíst jedničku. Jenže co dělat, když někdo vymaže pár záznamů nebo bude sloupec třeba varchar? A selectovat všechny záznamy, procházet je a hledat předchozí a následující záznam mi připadá pěkná prasárna... :-( |
||
Alphard Profil |
#2 · Zasláno: 14. 11. 2007, 19:16:01
select * from tabulka where sloupec < 5 order by sloupec desc limit 1
|
||
mazlo Profil |
#3 · Zasláno: 14. 11. 2007, 19:38:53
Super, mockrát díky :-)
Nějak jsem si neuvědomil, že můžu používat operátory i u nečíselných typů :-/ |
||
Kajman_ Profil * |
#4 · Zasláno: 14. 11. 2007, 21:51:07
Dobré je tam určit jedinečné pořadí, např si pomoci id, když jsou sloupečky stejné, aby to fungovalo správně...
Tady je příklad, jak vybrat předchozí a další vůči současnému id, ale podle jiného sloupečku. (select 'predchozi' smer, a.* from tabulka a, tabulka b where b.id=$id and (a.sloupecek<b.sloupecek or (a.sloupecek=b.sloupecek and a.id<b.id)) order by a.sloupecek desc, a.id desc limit 1) union (select 'dalsi' smer, a.* from tabulka a, tabulka b where b.id=$id and (a.sloupecek>b.sloupecek or (a.sloupecek=b.sloupecek and a.id>b.id)) order by a.sloupecek, a.id limit 1) |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0