Autor | Zpráva | ||
---|---|---|---|
kopo Profil |
Prosím o pomoc s sql dotazem. Mám tabulku "zprávy" se sloupci id_odesilatel, id_prijemce,datum
Potřebuji vypsat moje konverzace s různými uživateli tak, aby se zobrazila pouze poslední zpráva konverzace. Já můžu být jak odesílatel, tak i příjemce. Zkoušel jsem toto pro výpis konverzací: SELECT * FROM `zpravy` WHERE (`id_odesilatel` = ".$_SESSION['id'].") or (`id_prijemce`= ".$_SESSION['id'].") ORDER BY `datum` Desc pak se bude asi pokračovat cyklem while pro výpis všech konverzací, kde se objevuje moje $_SESSION['id'], ale nevím, jak to "zgrupovat" do konverzací s jedním uživatelem. A pak ještě spočítat počet zpráv v konverzaci, ale to už by asi nebyl problém. Děkuji za nakopnutí. |
||
juriad Profil |
kopo:
SELECT * FROM zpravy z JOIN ( # poslední zprávy SELECT MAX(z.id) AS id, # id poslední zprávy s partnerem IF(z.id_odesilatel = $id, z.id_prijemce, z.id_odesilatel) AS partner, # partner komunikace COUNT(z.id) AS pocet # počet zpráv s partnerem FROM zpravy z WHERE z.id_odesilatel = $id OR z.id_prijemce = $id GROUP BY partner ) p ON p.id = z.id ORDER BY z.datum DESC Ten vnější dotaz jen doplní informace o poslední zprávě - nelze je získat z vnitřního dotazu, protože neexistuj agregační funkce, která by je vrátila. Tiše předpokládám, že novější zpráva má větší ID. |
||
Časová prodleva: 8 let
|
0