Diskuze: MySQL - group
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
No, tak jsem nakonec pro svojí konkrétní tabulku napsal tohle řešení:
SELECT precteno,pro,text,datum,a.jmeno as od FROM messages m JOIN accounts a ON m.od = a.id WHERE (od= ? OR pro=?) GROUP BY CONCAT(GREATEST(od,pro), '-', LEAST(od,pro))
Nicméně to mi vybere tu nejstarší zprávu z celé konverzace. Teď už jen vyřešit jak po groupnutí vypsat jen ten prvek s nejvyšším ID z dané GROUP, což se mi moc nedaří
nestačlo, jelikož by ti to do té konverzace negroupovalo odpovědi toho druhého.
Nakonec jsem ale ten problém vyřešil takhle:
SELECT precteno,pro,text,datum,od,a.jmeno AS od_name,a2.jmeno AS pro_name FROM messages m JOIN accounts a ON m.od = a.id JOIN accounts a2 ON m.pro = a2.id WHERE m.id IN (SELECT MAX(id) FROM messages GROUP BY CONCAT(GREATEST(od,pro), '-', LEAST(od,pro))) ORDER BY m.id DESC
Zobrazeno 4 zpráv z 4.