dedlfix: PHP MySQL 2 Tabellen Abfrage

Beitrag lesen

Tach!

SELECT members.zeug, (SELECT MAX(datum) FROM pm WHERE from = members.id AND to = :sessionid) datum FROM members ORDER BY datum
Danke Dir erstmal. Genau will alle Mitglieder auflisten und die wo man die neuste Nachricht erhalten hat (aus Tabelle pm) sollen oben angezeigt werden z.B.
Sven (2 Nachrichten, Letzte Nachricht: 10.12.13)
Natascha (5 Nachrichten, Letzte Nachricht: 10.01.14)
Dennis (1 Nachricht, Letzte Nachricht: 09.01.14)

Dazu fehlt noch die Anzahl der Nachrichten. Die bekommst du so leider nicht mit in die Subquery rein, denn sie steht an einer Stelle, wo nur ein einzelner Wert erlaubt ist.

Der Code von oben sieht ganz gut aus, aber irgendwie hat die Subquery keine Auswirkung.

Die Sortierung sollte zumindest schon richtig sein. Und es gibt ein neues Feld in der Ergebnismenge, in meinem Beispiel namens "datum".

Nun noch das Problem mit dem zweiten Wert. Den gibts mit noch einer Subquery (was nicht so toll ist) oder wenn du sie Subquery ins FROM schreibst.

SELECT members.zeug, p.datum, p.anzahl  
FROM members  
LEFT JOIN (SELECT COUNT(*) anzahl, MAX(datum) datum FROM pm WHERE to = :sessionid) p ON p.from = members.id  
ORDER BY datum

Aus dem Kopf müsste das so gehen.

Der Code von oben sieht ganz gut aus, aber irgendwie hat die Subquery keine Auswirkung.

Beachte, dass ich mit dem :sessionid den Parameter per Prepared Statement übergebe. Wenn du die nicht nimmst, muss du ihn auf herkömmliche Weise reinfummeln.

dedlfix.