Autor | Zpráva | ||
---|---|---|---|
maxav Profil * |
#1 · Zasláno: 2. 9. 2006, 20:45:28
Ahoj, mam id podle ktereho vybiram zaznam. Jde nejak vybrat i sousedici zaznamy? kdyz je ID 234, tak nejakym SELECTem vybrat 233 a 235. Nebo treba 231 pokud 233 a 232 neni...
|
||
maxav Profil * |
#2 · Zasláno: 2. 9. 2006, 20:46:12
Omlouvám se, že to bylo bez diakritiky...
|
||
djlj Profil |
#3 · Zasláno: 2. 9. 2006, 20:58:13 · Upravil/a: djlj
$id=10;
WHERE id='".$id."' OR id='".($id-1)."' OR id='".($id+1)."' Tohle ti vybere, jen pokud ty záznamy existují. Pokud ne, tak to nevím.. |
||
maxAV Profil |
#4 · Zasláno: 2. 9. 2006, 21:28:58
Díky za odpověď, tohle právě není spolehlivý pokud některá ID chybí...
|
||
Michal Škrabálek Profil |
#5 · Zasláno: 2. 9. 2006, 21:51:12
Také jsem to řešil a nakonec použil dva další dotazy na db ve stylu select max id where id<"$id" pro položku o jedno menší a select min id where id>"$id". Ale asi to není optimální.
|
||
Joker Profil |
#6 · Zasláno: 3. 9. 2006, 09:43:23 · Upravil/a: Joker
Michal Škrabálek
Ovšem pokud by chtěl ty řádky vypsat, musel by pak udělat další select na ta id. Lepší by bylo: select ... where id < $id order by id desc limit 1, respektive select ... where id > $id order by id asc limit 1 Jo a povedlo se mi dát dohromady i jediný dotaz na výběr dvou nejbližších ID, cha! :) SELECT a.id AS nejblizsi_nizsi, b.id AS nejblizsi_vyssi FROM `tabulka` a JOIN `tabulka` b ON (a.id < $id AND b.id>$id) ORDER BY (b.id-a.id) ASC LIMIT 1 ...ale stejn2 bych radši použil ty dva dotazy, tohle asi nebude moc efektivní (jelikož v tomhle dotazu mám počet řádků tabulky umocněný na druhou) |
||
maxAV Profil |
#7 · Zasláno: 3. 9. 2006, 11:03:41
Tak to je teda pěkný maso, taková zdánlivě jednoduchá věc :-)
Každopádně díky za návrhy řešení! |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0