Autor Zpráva
maxav
Profil *
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 *
Omlouvám se, že to bylo bez diakritiky...
djlj
Profil
$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
Díky za odpověď, tohle právě není spolehlivý pokud některá ID chybí...
Michal Škrabálek
Profil
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
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
Tak to je teda pěkný maso, taková zdánlivě jednoduchá věc :-)
Každopádně díky za návrhy řešení!
Toto téma je uzamčeno. Odpověď nelze zaslat.

0