Autor Zpráva
uoiuiiiii
Profil *
Zdravim potreboval bych poradit jak udelat tyto 3 dotazy do jednoho:

(select * from neco where id=3 and a=1)= vypise co potrebuju + potrebuju ziskat IDcka "vedlejsich zaznamu" ktery ziskam napr. takto:
select id from neco where id<3 and a=1 ORDER BY id DESC LIMIT1 -- ziskam o jedno nizsi IDcko
select id from neco where id>3 and a=1 ORDER BY id DESC LIMIT1 -- ziskam o jedno vyssi IDcko

ale toto mne neprijde jako idealne, tzn. poradil by nekdo jak v jednom dotazu ziskat i vedlejsi IDcka?
uoiuiiiii
Profil *
jaj u druhyho dotazu ma byt ASC
ShiraNai7
Profil
Zkus..

první způsob (kratší):
SELECT *,(SELECT id FROM neco WHERE id < _hlavni.id AND a = _hlavni.a ORDER BY id DESC LIMIT 1) id_nizsi, (SELECT id FROM neco WHERE id > _hlavni.id AND a = _hlavni.a ORDER BY id ASC LIMIT 1) id_vyssi FROM neco _hlavni WHERE id = 3 AND a = 1;


druhý způsob (delší a blbější - musí se vyplňovat hodnota "id" a "a" na více místech):
SELECT _hlavni.*, _nizsi.id    id_nizsi, _vyssi.id    id_vyssi FROM neco _hlavni LEFT JOIN (SELECT id FROM neco WHERE id < 3 AND a = 1 ORDER BY id DESC LIMIT 1) _nizsi ON 1 LEFT JOIN (SELECT id FROM neco WHERE id > 3 AND a = 1 ORDER BY id ASC LIMIT 1) _vyssi ON 1 WHERE _hlavni.id = 3 AND _hlavni.a = 1;


Oba mají stejný výsledek - řádek ze všemi sloupci z tabulky "neco" a dále sloupci "id_vyssi" a "id_nizsi". Použij raději ten první.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0