Zum Inhalt springen
YellowBlue
IT-Grundlagen4 Min. Lesezeit

SQL-JOINs erklärt: INNER JOIN und LEFT JOIN

Kurzantwort

Ein JOIN verbindet in SQL Daten aus mehreren Tabellen zu einem gemeinsamen Ergebnis, meist über den Fremdschlüssel. Der INNER JOIN liefert nur Zeilen, zu denen es in beiden Tabellen einen Treffer gibt. Der LEFT JOIN gibt zusätzlich alle Zeilen der linken Tabelle zurück, auch ohne Partner. So führt man Daten wieder zusammen, die durch die Normalisierung auf mehrere Tabellen verteilt wurden.

Teil des Lernpfads Datenbanken und SQL · Schritt 5 von 9

Die Normalisierung verteilt Daten sinnvoll auf mehrere Tabellen – aber für eine Auswertung will man sie oft wieder zusammen sehen. Genau das leistet der JOIN: Er führt Tabellen in einer Abfrage zusammen. Für Fachinformatiker:innen ist er tägliches Werkzeug und beliebter Prüfungsstoff.

Was ist ein JOIN?

Ein JOIN verbindet in einer SQL-Abfrage die Zeilen mehrerer Tabellen zu einem gemeinsamen Ergebnis. Die Verbindung läuft über eine Bedingung – meist gehört ein Fremdschlüssel der einen Tabelle zum Primärschlüssel der anderen.

Nehmen wir zwei Tabellen: azubis (mit einer klassen_id als Fremdschlüssel) und klassen.

INNER JOIN: nur die Treffer

Der INNER JOIN liefert nur die Zeilen, zu denen es in beiden Tabellen einen passenden Partner gibt.

SELECT azubis.name, klassen.bezeichnung
FROM azubis
INNER JOIN klassen ON azubis.klassen_id = klassen.id;

Das Ergebnis enthält jeden Azubi zusammen mit seiner Klasse – aber nur, wenn die Klasse existiert. Ein Azubi ohne gültige Klasse taucht nicht auf, eine Klasse ohne Azubis ebenso wenig.

Der LEFT JOIN gibt alle Zeilen der linken Tabelle zurück – auch die ohne Partner rechts. Fehlt der Partner, stehen dort leere Werte (NULL).

SELECT azubis.name, klassen.bezeichnung
FROM azubis
LEFT JOIN klassen ON azubis.klassen_id = klassen.id;

Jetzt erscheint jeder Azubi – und wer noch keiner Klasse zugeordnet ist, steht mit leerem Klassenfeld da. Das ist ideal, um genau solche Lücken zu finden.

Die Join-Typen im Überblick

Join-TypLiefert
INNER JOINnur Zeilen mit Treffer in beiden Tabellen
LEFT JOINalle aus der linken Tabelle, plus Treffer rechts
RIGHT JOINalle aus der rechten Tabelle, plus Treffer links
FULL JOINalle Zeilen aus beiden Tabellen

Selbstkontrolle

Selbstkontrolle

Du willst alle Azubis auflisten, auch die, die noch keiner Klasse zugeordnet sind. Welcher Join passt?

Häufige Fragen

Wozu braucht man überhaupt Joins?

Weil normalisierte Datenbanken zusammengehörige Daten auf mehrere Tabellen verteilen, um Redundanz zu vermeiden. Für eine Auswertung will man sie aber oft gemeinsam sehen. Der JOIN führt die Tabellen in der Abfrage wieder zusammen, ohne die Daten dauerhaft zu vermischen.

Was bedeutet die ON-Bedingung?

Die ON-Bedingung legt fest, welche Zeilen der Tabellen als zusammengehörig gelten. Meist vergleicht sie den Fremdschlüssel der einen mit dem Primärschlüssel der anderen Tabelle. Ohne diese Bedingung wüsste die Datenbank nicht, welche Zeilen sie verbinden soll, und würde jede mit jeder kombinieren.

Was ist der Unterschied zwischen LEFT und RIGHT JOIN?

Beide behalten alle Zeilen einer Seite, auch ohne Partner. Der LEFT JOIN behält alle Zeilen der zuerst genannten, linken Tabelle, der RIGHT JOIN alle der zweiten, rechten. In der Praxis nutzt man fast immer den LEFT JOIN und dreht bei Bedarf die Reihenfolge der Tabellen um.

Kann man mehr als zwei Tabellen verbinden?

Ja. Man reiht mehrere JOINs aneinander und verbindet so drei oder mehr Tabellen in einer Abfrage. Jede Verbindung braucht ihre eigene ON-Bedingung. So lassen sich auch komplexe Auswertungen über viele zusammenhängende Tabellen hinweg formulieren.

Weiterlesen: SQL-Grundlagen: Daten mit SELECT abfragen · DDL und DML: SQL-Befehle im Überblick · ER-Modell erklärt: Entity-Relationship-Modell · Transaktionen und das ACID-Prinzip

Das Wichtigste in Kürze

  • Ein JOIN verbindet mehrere Tabellen in einer Abfrage, meist über den Fremdschlüssel.
  • Die ON-Bedingung legt fest, welche Zeilen zusammengehören.
  • INNER JOIN: nur Zeilen mit Treffer in beiden Tabellen.
  • LEFT JOIN: alle Zeilen der linken Tabelle, auch ohne Partner.

Schlagwörter

Verwandte Beiträge

IT-Grundlagen4 Min. Lesezeit

DDL und DML: SQL-Befehle im Überblick

DDL, DML, DQL, DCL und TCL im Überblick: Welche SQL-Befehle zu welcher Gruppe gehören, mit Beispielen und Prüfungstipps zu DELETE, TRUNCATE und DROP.

IT-Grundlagen4 Min. Lesezeit

SQL-Grundlagen: Daten mit SELECT abfragen

Wie du mit SELECT gezielt Daten aus einer Datenbank holst: Spalten wählen, mit WHERE filtern, mit ORDER BY sortieren und mit GROUP BY gruppieren.

IT-Grundlagen3 Min. Lesezeit

Transaktionen und das ACID-Prinzip

Warum Datenbanken zusammengehörige Schritte zu Transaktionen bündeln und was die vier ACID-Eigenschaften bedeuten – erklärt am Beispiel einer Überweisung.