Zurück zur Artikelliste Artikel
5 Leseminuten

Eine illustrierte Anleitung für den SQL OUTER JOIN

Wir haben bereits über die SQL CROSS JOIN und INNER JOIN Anweisungen besprochen. Jetzt ist es an der Zeit, eine weitere zu erforschen: OUTER JOIN. Was ist das? Wie funktioniert er? Finden wir es heraus!

Wenn Sie unsere anderen Beiträge gelesen haben, wissen Sie, dass Sie die Daten in zwei oder mehr Datenbanktabellen mit einem der vielen Typen von SQL-Join-Operatoren verknüpfen können. Heute werden wir die drei Arten von OUTER JOIN besprechen: LEFT OUTER JOIN, RIGHT OUTER JOIN, und FULL OUTER JOIN. Diese verknüpfen Datensätze auf der Grundlage übereinstimmender Zeilenwerte, aber sie gehen dabei etwas anders vor als andere Join-Anweisungen.

Was ist ein SQL OUTER JOIN?

Um diese Frage zu beantworten, müssen wir uns mit den verschiedenen Arten von OUTER JOIN auseinandersetzen:

  • LEFT OUTER JOIN gibt jeden Datensatz in der linken Tabelle und alle passenden Datensätze aus der rechten Tabelle zurück. Wenn keine Übereinstimmung gefunden wird, wird neben dem nicht übereinstimmenden Datensatz ein NULL angezeigt.
  • RIGHT OUTER JOIN gibt jeden Datensatz in der rechten Tabelle und alle übereinstimmenden Datensätze in der linken Tabelle zurück. Wenn keine Übereinstimmung gefunden wird, wird neben dem nicht übereinstimmenden Datensatz ein NULL angezeigt.
  • FULL OUTER JOIN gibt alle Datensätze aus beiden Tabellen zurück. Alle nicht übereinstimmenden Datensätze werden mit NULLs gepaart.

Schauen wir uns nun die Tabellen an, die wir zur Veranschaulichung dieser Operatoren verwenden werden.

Die Tabelle "shirt" Tabelle hat nur ein Feld, "color_shirt":

color_shirt
yellow
green
blue

Die Tabelle "pants" Tabelle hat auch ein Feld, "color_pants":

color_pants
pink
green
blue

Diese Tabellen sind selbsterklärend. Stellen Sie sie sich einfach als zwei Teile eines Outfits vor: die Farbe Ihrer Hose und die Farbe Ihres Hemdes. Es geht darum, Hemden und Hosen mit identischen Farben zu finden.

Gut zu wissen: Die linke Tabelle ist die erste Tabelle in der Liste und befindet sich nach der FROM Klausel. Die rechte Tabelle ist die zweite Tabelle in der Liste und befindet sich nach der JOIN Klausel. In der Regel können Sie das Schlüsselwort OUTER in jeder OUTER JOIN weglassen - FULL JOIN, LEFT JOIN und RIGHT JOIN funktionieren in vielen Datenbanken genauso gut (aber überprüfen Sie Ihre Dokumentation, um sicherzugehen).

Verwendung eines LEFT OUTER JOIN

LEFT OUTER JOIN ruft alle Datensätze aus der ersten (linken) Tabelle ab und gleicht sie mit Datensätzen aus der zweiten (rechten) Tabelle ab. Alle nicht übereinstimmenden Datensätze aus der linken Tabelle werden ebenfalls ausgewählt, allerdings mit NULL-Werten an der Stelle, an der die Datensätze der rechten Tabelle stehen würden.

Schauen Sie sich das Beispiel an.

SELECT color_shirt, color_pants 
FROM shirt
LEFT JOIN pants ON color_shirt=color_pants;

Die linke Tabelle (nach FROM) ist "shirt" und die rechte Tabelle (nach LEFT JOIN) ist "pants". Das ON-Prädikat gibt die Bedingung für den Abgleich von Datensätzen aus "shirt" mit Datensätzen aus "pants". Diese Bedingung lautet, dass die Werte im Feld "shirt"."color_shirt" und die Werte im Feld "pants"."color_pants" übereinstimmen müssen. Wenn es keine Übereinstimmung gibt, werden Datensätze aus der Tabelle "shirt" angezeigt, aber ein NULL-Wert wird an die Stelle des passenden "pants" Datensatz stehen würde.

Dies sind die Ergebnisse dieser Abfrage:

color_shirt color_pants
yellow NULL
green green
blue blue

Und hier ist eine Illustration, wie diese Abfrage funktioniert und wie die Ergebnisse aussehen:

Left Join

Wie Sie sehen, sind das grüne und das blaue Outfit zusammen. Das gelbe Hemd hat keine Hose, weil die Tabelle "pants" Tabelle keine Felder mit einem "gelben" Wert hat.

Verwendung eines RIGHT OUTER JOIN

RIGHT OUTER JOIN funktioniert wie LEFT JOIN, jedoch mit einem großen Unterschied: Es wählt alle Datensätze aus der richtigen Tabelle aus (in diesem Fall "pants"). Die Datensätze aus der linken Tabelle ("shirt") werden nur angezeigt, wenn sie übereinstimmen.

Sehen Sie sich die Abfrage an:

SELECT color_shirt, color_pants 
FROM shirt	
RIGHT JOIN pants ON color_shirt=color_pants;

Hier ist das Ergebnis:

color_shirt color_pants
NULL pink
green green
blue blue

Und hier ist eine Illustration der Verwendung von RIGHT JOIN und ihrer Ergebnisse. Es werden alle Hosen angezeigt, aber es gibt kein passendes Hemd für die rosa Hose.

rechter Join

Verwendung eines FULL OUTER JOIN

Fassen wir noch einmal zusammen, was wir bisher getan haben. Mit LEFT JOIN wurden alle Hemden und alle passenden Hosen zurückgegeben. Mit RIGHT JOIN wurden alle Hosen und alle dazu passenden Hemden zurückgegeben. Was passiert, wenn Sie eine FULL OUTER JOIN verwenden? Es werden alle Datensätze aus beiden Tabellen angezeigt. Wenn möglich, werden die Datensätze übereinstimmen; wenn nicht, wird an der Stelle des übereinstimmenden Datensatzes ein NULL angezeigt.

Schauen wir uns eine Beispielabfrage an:

SELECT color_shirt, color_pants 
FROM shirt
FULL  JOIN pants ON color_shirt=color_pants;

Beachten Sie, dass es in einer FULL JOIN unerheblich ist, welche Tabelle links und welche rechts ist. Das Ergebnis wird das gleiche sein.

Hier ist das Ergebnis:

color_shirt color_pants
yellow NULL
green green
blue blue
NULL pink

Die Ergebnismenge enthält alle Datensätze, die in der Tabelle "shirt" und in der Tabelle "pants"Tabelle.

Voll-Join

Das Bild zeigt, dass FULL JOIN alle möglichen Kleidungsstücke zurückgibt: alle Hemden und alle Hosen. Die übereinstimmenden Paare (grün und blau) werden zusammen angezeigt, und die nicht übereinstimmenden Artikel (gelbes Hemd und rosa Hose) werden separat angezeigt.

Möchten Sie mehr über OUTER JOINs erfahren?

Es gibt noch mehr über die Verwendung von OUTER JOINS zu erfahren. Wenn Sie mehr erfahren möchten, besuchen Sie den Kurs LearnSQL.de SQL für Anfänger .