INNER JOIN
Der INNER JOIN kombiniert Datensätze, bei denen es in beiden Tabellen eine Übereinstimmung gibt, basierend auf einer Join-Bedingung.
Syntax von INNER JOIN
SELECT <Spalten> FROM tabelle_l
INNER JOIN tabelle_r ON <Bedingung>;
Beispieltabelle
Wir gehen von folgendem Beispielschema samt Beispieldaten aus:
Kombiniere Mitarbeiter und Abteilung
Wir können die entsprechenden Zeilen aus der Abteilungs-Tabelle an die entsprechenden Zeilen aus der Mitarbeiter-Tabelle "joinen":
SELECT *
FROM Mitarbeiter
INNER JOIN Abteilung
ON Mitarbeiter.abteilung = Abteilung.id;
Wenn wir diesen JOIN-Query absenden, passiert folgendes: In einem Zwischenschritt, von dem wir nichts mitbekommen, wird jede Zeile aus Tabelle 1 mit jeder Zeile aus Tabelle 2 kombiniert. Bis hierhin ist das der CROSS JOIN. Aber dann wird die Bedingung geprüft und alle Zeilen die nicht passen (ein großteil), werden verworfen und nicht in die Ergebnistabelle übernommen.
Die Ergebnistabelle sieht dann so aus:
Wir sehen, dass wir jetzt redundante Spalten haben (abteilung
und id
).
Wenn wir die SELECT-Klausel wie folgt anpassen:
SELECT
m.id,
m.vorname,
m.nachname,
a.name AS abteilung
FROM Mitarbeiter m
INNER JOIN Abteilung a
ON m.abteilung = a.id;
sieht das Ergebnis viel besser aus:
Ausgefilterte Zeilen
Die rot markierten Zeilen sind nicht in der Ergebnistabelle vorhanden, das liegt daran, dass diese Zeilen keinen "Join-Partner" in der jeweils anderen Tabelle gefunden haben.
Warum manchmal gerade diese Zeilen so interessant sind und wie man sie per Query ausliest, erfahren Sie auf der nächsten Seite.
Fazit
Wie wir gesehen haben, ist es ohne viel Aufwand möglich, die ausgelagerten Daten wieder zusammenzuführen.
Das ermöglicht es uns, die Daten redundanzfrei zu speichern und bei Bedarf wieder zu kombinieren.