Autor Zpráva
SkyVessel
Profil
Zdravím,

když uživatel klikne na nějakou položku v akci <a href="vypis.php?kat=akce&typ=23">,
tak chci, aby se zobrazily všechny položky v akci $dotaz = "SELECT * FROM zbozi WHERE kategorie = '$kategorie' ORDER BY cena";,
ale ta, na kterou kliknul, aby byla na začátku...

Jde tohle nějak uspořádat v dotazu, nebo se to musí až potom v php nějak vytáhnout?
juriad
Profil
Lze:
SELECT * FROM zbozi WHERE kategorie = '$kategorie'
ORDER BY produkt_id = $kliknuto DESC, cena ASC

Výsledek porovnání produkt_id = $kliknuto bude buď 0 - neshoduje se, nebo 1 - shoduje se
Chceš tedy napřed výsledky, které se shodují (1) a pak neshodují (0), proto DESC.
Následně zbytek seřadíš podle ceny jako dosud.
mimochodec
Profil
ORDER BY FIELD?
http://stackoverflow.com/questions/13416153/order-by-field-in-mysql

(ale juriad lepší. Jeho postup jsem chtěl taky napsat, ale nebyl jsem si jist a testovat se mně to nechtělo.)
SkyVessel
Profil
Chlapi díky :)
...jdu se do toho pustit

edit: dělá to přesně to, co jsem potřeboval... Díky za tip s tím = ... Bych se s tím nějak mordoval v php - ještě, že jsem se zeptal :D
juriad
Profil
ORDER BY FIELD nebude fungovat v jiné databázi než MySQL (SkyVessel neuvedl, jakou používá :). Navíc je to volání funkce pro každý řádek místo prostého porovnání. Pokud by těch speciálních řádků bylo více, možná by se to vyplatilo jak z hlediska výkonu, tak i čitelnosti.
rafej
Profil
[#2] juriad
Tohle řešení se mi líbí. Zase se dovídám něco nového. Díky.

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: