Autor Zpráva
souki
Profil
Mám dejme tomu zboží v kategorii, řazené podle názvu a ceny. Když jsem v detailu toho zboží (stále vím, kategorii a v jakých prioritách se řadí), tak bych potřeboval odkázat na další a předcházející položku.
Kdyby to bylo jen podle ceny, tak je to jasné. Ale to řazení může být podle více sloupců (v různých tabulkách) a navíc jejich pořadí (+výběr) ovlivňuje uživatel.

Nenapadá vás, jak získat třeba ID následujicího a předcházejícího produktu?
Dík
Alphard
Profil
nechat data seřadit podle požadavků a vytáhnout předchozí záznam s order by xxx desc limit 1 a následující s order by xxx limit 1, do 1 dotazu lze spojit pomocí union
jestli si vzpomínám, je o tom něco i ve FAQ
souki
Profil
Alphard
Jenže jak vytáhnu předchozí záznam? :) Když vezmu data seřazená podle požadavků, tak ten můj produkt bude třeba 30. z 50ti a já potřebuju č.29 a 31. Jenže nevím, že ten můj produkt je 30.
souki
Profil
Sakriš ono to je vážně ve FAQ. Už jsem tam dlouho nebyl... Pardon.
Takže si to jen upravím na o něco komplikovnější případ

EDIT:
Jenže ve FAQ se to řeší pro řazení podle jednoho sloupce a jen v jedné tabulce. Já mám spojení několika tabulek a řazení podle několika sloupců - jak tam vyřeším tu prioritu?
Alphard
Profil
buď nějak poskládat podmínku where, ale nevím, jestli je to možné
také by se mohly data vytáhnout setříděná a očíslovaná, najít v nich současné id a podle pořadí vzít větší a menší, viz http://www.linuxsoft.cz/article.php?id_article=886 ale až uvidíte ten dotaz pro jedinou tabulku, budete mít určitě chuť vraždit
a třetí možnost, počkat, co vymyslí Kajman_ :-)
Kcko
Profil
souki mozna ti pomuze toto ...
http://www.webfaq.cz/clanek/Mysql-poradi-radku-v-dotazu
Kajman_
Profil *
souki
Stačí ve where přidat cenu mezi nazev a id, kdy to bude stále před nebo za záznamem o(nazev=nazev and cena<cena) a také dáte cenu do řazení. Prostě vyberete, co je před záznamem a seřadíte to obráceně, vezmete první a máte předchozí. Následující je zase první z těch, co jsou za aktuálním záznamem.

Může to být těžší přepsat to order by do těch podmínek, ale jde to ;-) Nebo alespoň spočítat kolik záznamů při tom řazení je nad aktuálním a pak použít klasický order a dát tam limit, aby to vzalo jeden před až jeden po.

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