Autor Zpráva
grimword
Profil
Mohl by mi někdo přeložit, co dělá tento Mysql dotaz?

SELECT t1.* , IFNULL(MAX(t2.id), t1.id) 'razeni' FROM diskuse AS t1 LEFT JOIN diskuse AS t2 ON t1.id = t2.id_reakce WHERE t1.id_reakce ='' GROUP BY t1.id ORDER BY razeni DESC";
juriad
Profil
Vyber všechny diskuse, které nejsou reakcí a pro každou z nich najdi poslední reakci (nejvyšší id, pokud neexistuje, vezmi rovnou zakládající příspěvek) a pak to podle toho seřaď sestupně (nejnovější napřed). GROUP BY zajistí, že se to bude brát po skupinách zakládajících příspěvků.

Zakládající příspěvek 1 (id = 1, id_reakce = '') -> razeni = 7
\ první reakce (id = 2, id_reakce = 1)
\ druha reakce (id = 3, id_reakce = 1)
\ treti reakce (id = 7, id_reakce = 1)

Zakládající příspěvek 2 (id = 4, id_reakce = '') -> razeni = 6
\ první reakce (id = 5, id_reakce = 4)
\ druha reakce (id = 6, id_reakce = 4)

Zakládající příspěvek 3 (id = 8, id_reakce = '') -> razeni = 8

Takže v podstatě vypíše zakládající příspěvky seřazené sestupně podle poslední reakce, mají-li nějakou.
grimword
Profil
Zpětně si teď uvědomuji, že jsem měl nejspíš napsat i strukturu tabulky. A logiku, jakou se do ní zapisují diskuse a reakce. Vidím ale, že jsi to pochopil i bez těchto dat. Díky moc!

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: