SonMiko
Erfahrenes Mitglied
Hallo zusammen!
Mich plagt ein kleines Problem in einer mySQL Datenbankanfrage.
Es gibt 2 Tabellen: user und messages.
Die Tabelle "messages" beinhaltet sämtliche Nachrichten.
Dabei gibt es hier folgende Felder:
id, id_sender, id_receiver, message
Selbsterklärend werden über die Felder id_sender und id_receiver der Sender und Empfänger einer
Nachricht festgehalten.
Nun möchte ich gerne eine Liste für einen eingeloggten User ausgeben (user.id ist in der Session gespeichert),
welche alle Personen anzeigt mit denen jemals geschrieben wurde.
Das Problem hierbei ist, dass die Personen sowhl in der id_sender als auch id_receiver auftauchen können.
Wie kann ich hier nun eine Art "DISTINCT" erzeugen, so dass die Summe beider Spalten (id_sender und id_receiver) keinerlei redundanzen enthält?
Mein Ansatz:
Die 1200 steht für die ID des eingeloggten Benutzers.
Natürlich liefert diese Abfrage nun alle Messages mit den Joins der user wieder, was ich nicht brauchen kann.
Auch möchte ich ungerne in PHP Konstruktionen a la: in_array bei einer Schleife verwenden - sprich ich möchte
schon gerne eine saubere Abfrage.
Nur bekomm ichs mit meinem Wissensstand nicht hin.
Zuletzt hab ich mir die Funktion "IN" des mysql Handbuchs angesehen - ich bin sicher
dass sich damit etwas anstellen lässt, aber irgendwie hats noch nciht wirklich Klick gemacht.
Über Hilfe wäre ich super dankbar******
Viele liebe Grüße,
Mike
Mich plagt ein kleines Problem in einer mySQL Datenbankanfrage.
Es gibt 2 Tabellen: user und messages.
Die Tabelle "messages" beinhaltet sämtliche Nachrichten.
Dabei gibt es hier folgende Felder:
id, id_sender, id_receiver, message
Selbsterklärend werden über die Felder id_sender und id_receiver der Sender und Empfänger einer
Nachricht festgehalten.
Nun möchte ich gerne eine Liste für einen eingeloggten User ausgeben (user.id ist in der Session gespeichert),
welche alle Personen anzeigt mit denen jemals geschrieben wurde.
Das Problem hierbei ist, dass die Personen sowhl in der id_sender als auch id_receiver auftauchen können.
Wie kann ich hier nun eine Art "DISTINCT" erzeugen, so dass die Summe beider Spalten (id_sender und id_receiver) keinerlei redundanzen enthält?
Mein Ansatz:
Code:
SELECT
message.message,
u1.id AS u1id,
u1.user AS u1user,
u2.id AS u2id,
u2.user AS u2user,
FROM
message
LEFT JOIN
user AS u1
ON
message.id_sender=u1.id
LEFT JOIN
user AS u2
ON
message.id_receiver=u2.id
WHERE
(message.id_sender=1200
OR
message.id_receiver=1200)
Die 1200 steht für die ID des eingeloggten Benutzers.
Natürlich liefert diese Abfrage nun alle Messages mit den Joins der user wieder, was ich nicht brauchen kann.
Auch möchte ich ungerne in PHP Konstruktionen a la: in_array bei einer Schleife verwenden - sprich ich möchte
schon gerne eine saubere Abfrage.
Nur bekomm ichs mit meinem Wissensstand nicht hin.
Zuletzt hab ich mir die Funktion "IN" des mysql Handbuchs angesehen - ich bin sicher
dass sich damit etwas anstellen lässt, aber irgendwie hats noch nciht wirklich Klick gemacht.
Über Hilfe wäre ich super dankbar******
Viele liebe Grüße,
Mike