Rouven: MySQL > Problem mit JOIN ?!

Beitrag lesen

Hello,

dein Problem ist, dass du es hier nicht mit einer klassischen Beziehung zwischen 2 Tabellen zu tun hast, sondern ja eigentlich mit 2,5 Tabellen - warum? Weil deine tabelle2 über 2 Felder mit der tabelle1 in Beziehung steht.
Dein Ansatz zum Join beruhte auf grundsätzlich richtiger Syntax aber falscher Logik.
Zunächst mal etwas zur Vertiefung: SELFHTML-Artikel: Datenbanken - dort finden sich zwei Artikel zum Thema Joins.

So, nun überlegen wir also mal konkret zu deinem Problem:
Du möchtest in EINER Abfrage alle tabelle2-Sätze haben, wobei SENDER und RECIPIENT aufgelöst wurden. Das sind also zwei Joins.
Zur Frage welcher Join: Wenn alles richtig läuft, dann muss der Nutzer mit der jeweiligen ID ja vorhanden sein, also kannst du ruhig zum INNER Join greifen - der LEFT Join lohnt nur, falls du befürchtest eine oder beide Kennungen könnten nicht mehr existieren.

SELECT post.id, sender.nickname, recipient.nickname, post.msg
FROM
   tabelle2 AS post
INNER JOIN
   tabelle1 AS sender
   ON post.sender = sender.id
INNER JOIN
   tabelle1 AS recipient
   ON post.recipient = recipient.id

Prinzip klar? Wenn nicht, frag, sonst hats nichts gebracht.

MfG
Rouven

--
-------------------
Death is nature's way of telling you to slow down.