Ein Outer Join ist ein Begriff aus der Datenbankabfrage (meist in SQL) und bezeichnet eine spezielle Art, zwei Tabellen miteinander zu verknüpfen – auch dann, wenn keine passenden Datensätze in einer der Tabellen vorhanden sind.
LEFT OUTER JOIN (oder einfach: LEFT JOIN):
→ Gibt alle Datensätze aus der linken Tabelle zurück, auch wenn es keine passenden Datensätze in der rechten Tabelle gibt.
→ Nicht passende Werte aus der rechten Tabelle werden mit NULL
aufgefüllt.
RIGHT OUTER JOIN (oder: RIGHT JOIN):
→ Gibt alle Datensätze aus der rechten Tabelle zurück, auch wenn es keine passenden in der linken gibt.
→ Nicht passende Werte aus der linken Tabelle werden mit NULL
ergänzt.
FULL OUTER JOIN:
→ Gibt alle Datensätze aus beiden Tabellen zurück.
→ Wo keine Übereinstimmung vorliegt, wird mit NULL
ergänzt.
Angenommen, du hast zwei Tabellen:
Kunden
Kundennr | Name |
1 | Anna |
2 | Bernd |
3 | Clara |
Bestellungen
Bestellnr | Kundennr | Produkt |
101 | 2 | Buch |
102 | 4 | Lampe |
Kundennr | Name | Bestellnr | Produkt |
---|---|---|---|
1 | Anna | NULL | NULL |
2 | Bernd | 101 | Buch |
3 | Clara | NULL | NULL |
Ein expliziter Join ist eine klare, direkte Formulierung eines Joins in einer SQL-Abfrage, bei der die Join-Art (z. B. INNER JOIN
, LEFT JOIN
, RIGHT JOIN
, FULL OUTER JOIN
) ausdrücklich im SQL-Statement genannt wird.
SELECT *
FROM kunden
INNER JOIN bestellungen
ON kunden.kunden_id = bestellungen.kunden_id;
Hier sieht man deutlich:
Welche Tabellen verbunden werden (kunden
, bestellungen
)
Welche Join-Art verwendet wird (INNER JOIN
)
Welche Bedingung für den Join gilt (ON kunden.kunden_id = bestellungen.kunden_id
)
Ein impliziter Join ist die ältere Schreibweise mit einem Komma in der FROM
-Klausel, wobei die Join-Bedingung in der WHERE
-Klausel steht:
SELECT *
FROM kunden, bestellungen
WHERE kunden.kunden_id = bestellungen.kunden_id;
Diese Variante ist funktional gleich, aber weniger klar und nicht für komplexe Joins geeignet.
Lesbarer und strukturierter, vor allem bei mehreren Tabellen
Klarere Trennung von Join-Bedingungen und Filterbedingungen (ON
vs. WHERE
)
Empfohlen in moderner SQL-Programmierung
Ein impliziter Join ist eine Art, Tabellen in SQL zu verknüpfen, ohne das Schlüsselwort JOIN
explizit zu verwenden. Stattdessen wird der Join über die WHERE-Klausel ausgedrückt.
SELECT *
FROM kunden, bestellungen
WHERE kunden.kunden_id = bestellungen.kunden_id;
In diesem Beispiel werden die Tabellen kunden
und bestellungen
durch die Bedingung in der WHERE
-Klausel miteinander verknüpft.
SELECT *
FROM kunden
JOIN bestellungen ON kunden.kunden_id = bestellungen.kunden_id;
Kriterium | Impliziter Join | Expliziter Join |
---|---|---|
Syntax | Tabellen durch Komma getrennt, Verknüpfung in WHERE |
Nutzung von JOIN und ON |
Lesbarkeit | Weniger übersichtlich bei vielen Joins | Bessere Struktur und Lesbarkeit |
Fehleranfälligkeit | Höher (z. B. versehentliches Kreuzprodukt) | Weniger, da Join-Bedingungen klarer |
ANSI-92-Standard | Nicht konform | Konform |
Früher war das der Standard, aber heute wird der explizite Join empfohlen, da er lesbarer, strukturierter und weniger fehleranfällig ist – besonders bei komplexen Abfragen mit mehreren Tabellen.