mysql left join
Marco
- datenbank
Hallo alle zusammen,
ich habe folgende Sql-Abfrage:
Select p.*, n.timestamp from projekte as p left join nachrichten as n on p.id = n.projekt order by n.timestamp
Der Sinn dieser Abfrage ist das sie die einzelnen Projekte ausgibt und dazu die letzte Nachricht. Wenn noch keine Nachricht vorhanden ist, wird NULL ausgegeben, was auch so sein soll. Wenn ich jetzt aber 2 und mehr Nachrichten zu einem Projekt habe, gibt er einfach alle Nachrichten aus. Er soll aber nur die neuste Nachricht des jeweiligen Projektes ausgeben.
Marco
P.S.: timestamp ist unix-timestamp
Hallo Marco,
LIMIT?
Gruss,
Tobi
Halihallo Marco
Der Sinn dieser Abfrage ist das sie die einzelnen Projekte ausgibt und dazu die letzte Nachricht. Wenn noch keine Nachricht vorhanden ist, wird NULL ausgegeben, was auch so sein soll. Wenn ich jetzt aber 2 und mehr Nachrichten zu einem Projekt habe, gibt er einfach alle Nachrichten aus. Er soll aber nur die neuste Nachricht des jeweiligen Projektes ausgeben.
Du möchtest ein GROUP BY p.id anfügen[1] und n.timestamp um MAX(...) erweitern. So sollte
der Query nach kurzem überfliegen die Timestamp der letzten Nachricht liefern. Aber,
es wird wesentlich komplizierter, wenn du auch noch andere Daten zur Nachricht anfordern
wolltest.
[1] GROUP BY vor ORDER BY.
Viele Grüsse
Philipp