INNER JOIN
Joins & Mengen
Bedeutung
Der INNER JOIN liefert nur die Zeilen zurück, für die es in beiden Tabellen einen passenden Treffer gibt. Hat ein Kunde keine Bestellung, taucht er im Ergebnis nicht auf. Genauso wenig erscheint eine Bestellung, deren KundenID zu keinem Kunden passt. Es ist der am häufigsten genutzte Join-Typ.
Syntax
SELECT spalten FROM tabelleA INNER JOIN tabelleB ON tabelleA.schluessel = tabelleB.schluessel;
Das Schlüsselwort INNER ist optional – JOIN allein bedeutet dasselbe.
Beispiel: Kunden mit ihren Bestellungen
SELECT k.Name, b.BestellID, b.Menge FROM Kunden k INNER JOIN Bestellungen b ON k.KundenID = b.KundenID;
| Name | BestellID | Menge |
|---|---|---|
| Müller GmbH | 1001 | 3 |
| Müller GmbH | 1004 | 1 |
| Schmidt AG | 1002 | 5 |
Dupont SARL hat in diesem Ausschnitt keine Bestellung und fehlt daher.
Beispiel: drei Tabellen verbinden
Du kannst mehrere Joins verketten, um auch die Produktnamen zu bekommen:
SELECT k.Name, p.Produktname, b.Menge FROM Bestellungen b INNER JOIN Kunden k ON b.KundenID = k.KundenID INNER JOIN Produkte p ON b.ProduktID = p.ProduktID;
| Name | Produktname | Menge |
|---|---|---|
| Müller GmbH | Schreibtisch | 3 |
| Schmidt AG | Bürostuhl | 5 |
Stolperfalle
Vergisst du die ON-Bedingung, erzeugen manche Systeme ein riesiges Kreuzprodukt aus allen Zeilenkombinationen. Achte außerdem darauf, gleichnamige Spalten (z. B. KundenID in beiden Tabellen) immer mit dem Tabellen-Alias zu qualifizieren. Wenn du auch Kunden ohne Bestellung sehen willst, brauchst du stattdessen einen LEFT JOIN.