LEFT JOIN

LEFT JOIN funktioniert ähnlich wie INNER JOIN mit dem Unterschied, dass Einträge der linken Tabelle keine Verbindung zu den Daten der rechten Tabelle haben müssen, um selektiert zu werden.

kurz: Selektiere alles von der linken Tabelle, auch wenn in der rechten kein übereinstimmender Wert vorhanden ist.

LEFT JOIN Syntax

 SELECT * FROM tabelle1 LEFT JOIN tabelle2 ON tabelle1.spalten_name = tabelle2.spalten_name

Die Auswirkungen von LEFT JOIN wollen wir anhand des Beispiels aus JOIN – Tabellen zusammenfügen veranschaulichen.

INNER JOIN

 SELECT * FROM users JOIN questions ON users.id = questions.user_id

LEFT JOIN

 SELECT * FROM users LEFT JOIN questions
 ON users.id = questions.user_id

Im Gegensatz zum INNER JOIN, bei dem in beiden Tabellen der verknüpfende Wert vorhanden sein muss, ist das beim LEFT JOIN nicht der Fall. Beim LEFT JOIN werden alle Werte der linken Tabelle mit ins Result Set gepackt, auch wenn kein übereinstimmender Wert in der rechten Tabelle vorhanden ist.

Dazu noch ein passendes Beispiel. Wir wollen alle User selektieren, die bislang noch keine Frage gestellt haben.

 SELECT users.username  FROM users LEFT JOIN questions  
 ON users.id = questions.user_id  WHERE questions.user_id IS NULL 

Da das LEFT JOIN Result Set eine Tabelle erzeugt in der auch User gelistet werden, die keine Frage gestellt haben, können wir mittels IS NULL prüfen ob eine bestimmte Spalte den Wert NULL hat (wenn kein Wert vorhanden ist, wird automatisch NULL gesetzt). Dadurch ziehen wir uns aus dem LEFT JOIN die NULL Zeilen und erhalten damit die User, die noch keine Frage gestellt haben.