Autor | Zpráva | ||
---|---|---|---|
grimword Profil |
#1 · Zasláno: 11. 6. 2014, 19:14:58
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 |
#3 · Zasláno: 12. 6. 2014, 06:33:02
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!
|
||
Časová prodleva: 10 let
|
0