Autor Zpráva
anonymní_
Profil *
Dobrý den,

na svém webu mám fotky. Každá fotka má svůj štítek, a datum vytvoření. Potřeboval bych na webu vypsat všechny fotky, od nejnovějších, seskupené podle štítku. Má to fungovat tak, že pokud nahraju fotku se štítkem, který již mají nějaké starší fotky, tak se i přesto vypíše jako první ten štítek, se všema starýma fotkama, ale s tím, že první bude ta nově nahraná. Jinými slovy, i jedna fotka má vliv na seřazení všech fotek, respektivě štítků.

Zkoušel jsem do SQL dotazu dát: ORDER BY created DESC, tag_id DESC ... jenže tohle mi seřadí všechny fotky podle nejnovějších a až podle štítků... zkoušel jsem to i prohodit: ORDER BY tag_id DESC, created DESC, jenže tohle zase seřadí fotky podle štítků, a až podle nejnovějších.

Vyřešil jsem to tak, že to seřadím podle data vytvoření a pak pomocí php cyklu foreach ty fotky seskupím do štítků, a vypíšu to. Jenže to mi příjde strašně neelegantní.

Napadá vás, jak to vyřešit?

Děkuji.
Alphard
Profil
Řadit podle tag_id je podle mě neužitečné, je třeba nejdříve řadit podle aktuálnosti štítku, potom podle podle aktuálnosti fotky. Problém je, že vy zřejmě u štítku nemáte čas přidání nejnovější fotky, takže se tam musí doplnit dynamicky.

select i1.* from images i1 left join (select tag_id, max(created) latest from images group by tag_id) i2 on i1.tag_id = i2.tag_id order by i2.latest desc, i1.created desc
anonymní_
Profil *
Super, děkuju! :)

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: