Ein INNER JOIN ist ein Begriff aus der Datenbankabfrage (SQL). Er wird verwendet, um Datensätze aus zwei (oder mehr) Tabellen zu kombinieren – und zwar nur die Datensätze, bei denen es in beiden Tabellen passende Werte gibt.
Du hast zwei Tabellen:
Tabelle: Kunden
KundenID | Name |
---|---|
1 | Anna |
2 | Bernd |
3 | Clara |
Tabelle: Bestellungen
BestellID | KundenID | Produkt |
---|---|---|
101 | 1 | Buch |
102 | 2 | Laptop |
103 | 4 | Handy |
Jetzt willst du wissen, welche Kunden Bestellungen gemacht haben. Dafür brauchst du nur die Kunden, die in beiden Tabellen vorkommen.
SELECT Kunden.Name, Bestellungen.Produkt
FROM Kunden
INNER JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID;
Name | Produkt |
---|---|
Anna | Buch |
Bernd | Laptop |
Clara hat nichts bestellt → wird nicht angezeigt.
Die Bestellung mit KundenID 4 hat keinen passenden Kunden → wird ebenfalls ignoriert.
Ein INNER JOIN zeigt nur die Datensätze, bei denen es Übereinstimmungen in beiden Tabellen gibt.
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.