SQL Joins erklärt mit Beispielen (Inner, Left, Right, Full)

  1. Startseite
  2. Blog
  3. Datenbanken & SQL

Datenbanken & SQL

SQL Joins erklärt mit Beispielen (Inner, Left, Right, Full)

Lernen Sie INNER, LEFT, RIGHT, FULL, CROSS und SELF Join mit zwei kleinen Tabellen, klaren Abfragen und den genauen Ergebnissen.

Von Stack QuoraAktualisiert am 29. Okt. 20268 Min. Lesezeit
SQLSQL Joins erklärtmit Beispielenstackquora.com

Das Wichtigste

  • INNER JOIN: nur Zeilen, die in beiden Tabellen übereinstimmen.
  • LEFT JOIN: alle Zeilen links, dazu die Treffer (sonst NULL).
  • RIGHT JOIN: alle Zeilen rechts, dazu die Treffer.
  • FULL JOIN: alle Zeilen beider Tabellen, wo möglich verknüpft.
  • Über Schlüssel verknüpfen, Tabellenaliase nutzen und Join-Spalten indexieren.

Echte Datenbanken speichern nicht alles in einer Tabelle. Kunden stehen in einer Tabelle, Bestellungen in einer anderen. Um „Welche Kunden haben diesen Monat bestellt?“ zu beantworten, muss man sie kombinieren – genau das tun SQL Joins.

Dieser Leitfaden ist praxisnah. Joins verwirren Einsteiger, weil dieselben zwei Tabellen je nach Join-Typ unterschiedliche Ergebnisse liefern. Mit kleinen, konkreten Daten wird es einfach.

SQL Joins erklärt: Beispieltabellen

customers

id name
1 Asha
2 Ben
3 Chitra

orders

id customer_id total
101 1 250
102 1 120
103 2 90
104 9 40

Chitra hat keine Bestellungen, und Bestellung 104 verweist auf einen nicht existierenden Kunden (9). Diese zwei Randfälle zeigen den Unterschied zwischen den Join-Typen.

INNER JOIN

INNER JOIN liefert nur Zeilen, bei denen die Bedingung in beiden Tabellen erfüllt ist. Zeilen ohne Gegenstück fallen weg.

SELECT c.name, o.id AS order_id, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;

Ergebnis: Asha (101), Asha (102), Ben (103). Chitra und Bestellung 104 fehlen. Nutzen Sie ihn, wenn nur zusammengehörige Daten zählen, etwa Bestellungen mit Kundendetails. Ein einfaches JOIN bedeutet INNER JOIN.

LEFT JOIN

LEFT JOIN behält alle Zeilen der linken Tabelle und ergänzt passende Zeilen der rechten. Ohne Treffer sind die rechten Spalten NULL.

SELECT c.name, o.id AS order_id, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;

Ergebnis: Asha (101), Asha (102), Ben (103), Chitra (NULL, NULL). Jetzt erscheint Chitra.

Kurztipp: Um Kunden zu finden, die nie bestellt haben, filtern Sie rechts auf NULL: WHERE o.id IS NULL liefert Chitra. Tester nutzen das, um verwaiste oder fehlende Datensätze zu finden.

RIGHT JOIN und FULL JOIN

RIGHT JOIN ist das Spiegelbild von LEFT JOIN und behält alle Zeilen der rechten Tabelle. Die meisten vertauschen die Tabellen und nutzen LEFT JOIN, weil es natürlicher zu lesen ist.

SELECT c.name, o.id AS order_id
FROM customers c
RIGHT JOIN orders o ON o.customer_id = c.id;

Das Ergebnis enthält Bestellung 104 mit Kundenname NULL. FULL (OUTER) JOIN liefert alle Zeilen beider Tabellen: Chitra ohne Bestellung und Bestellung 104 ohne Kunde.

SELECT c.name, o.id AS order_id
FROM customers c
FULL OUTER JOIN orders o ON o.customer_id = c.id;

PostgreSQL und SQL Server unterstützen das. MySQL nicht – kombinieren Sie dort LEFT JOIN und RIGHT JOIN mit UNION. Zum Vertiefen bietet das PostgreSQL-Handbuch ein klares Join-Tutorial.

Join Nur linke Zeilen Nur rechte Zeilen Passende Zeilen
INNER Nein Nein Ja
LEFT Ja Nein Ja
RIGHT Nein Ja Ja
FULL Ja Ja Ja

CROSS JOIN und SELF JOIN

CROSS JOIN paart jede Zeile einer Tabelle mit jeder Zeile der anderen: drei Kunden und vier Bestellungen ergeben zwölf Zeilen. Er ist selten, aber nützlich für Kombinationen, etwa Testdaten für jede Größe und Farbe.

SELECT c.name, o.id
FROM customers c
CROSS JOIN orders o;

SELF JOIN verknüpft eine Tabelle mit sich selbst über Aliase, etwa um den Vorgesetzten jedes Mitarbeiters zu finden.

SELECT e.name AS employee, m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;

SQL Joins: typische Fehler und Performance-Tipps

  • Fehlende ON-Klausel erzeugt unbeabsichtigt einen CROSS JOIN und lässt die Zeilenzahl explodieren.
  • Filtern der rechten Tabelle im WHERE nach einem LEFT JOIN macht ihn zum INNER JOIN; setzen Sie die Bedingung ins ON.
  • Mehrdeutige Spaltennamen: Spalten mit dem Tabellenalias qualifizieren.
  • Join über nicht eindeutige Spalten vervielfacht Zeilen und bläht Summen auf.
  • Join-Spalten indexieren, nur benötigte Spalten auswählen und langsame Abfragen mit EXPLAIN prüfen.

Warum Joins für Tester wichtig sind

QA-Engineers nutzen Joins, um zu prüfen, ob über UI oder API erzeugte Daten korrekt in der Datenbank landen, und um verwaiste Datensätze zu finden. Lesen Sie dazu unseren Leitfaden zum API-Testen mit Postman (Englisch). Grundlagen finden Sie im SQL-Tutorial für Anfänger (Englisch), neue Datenspeicher in Vektordatenbanken (Englisch). Eine Datenbank lokal starten Sie mit unserem Docker-Tutorial (Englisch).

Fazit

SQL Joins in einer Zeile: INNER behält nur Treffer, LEFT alles links, RIGHT alles rechts, FULL alles. Üben Sie mit zwei kleinen Tabellen, bis Sie das Ergebnis vor dem Ausführen vorhersagen können. Danach verknüpfen Sie drei Tabellen und kombinieren Joins mit GROUP BY.

Häufige Fragen

Was ist der Unterschied zwischen INNER JOIN und LEFT JOIN?

INNER JOIN liefert nur übereinstimmende Zeilen aus beiden Tabellen. LEFT JOIN liefert alle Zeilen der linken Tabelle und füllt nicht passende rechte Spalten mit NULL.

Welcher SQL Join ist am schnellsten?

Kein Typ ist immer am schnellsten. Die Leistung hängt von Indizes, Tabellengröße und Ausführungsplan ab. Indexieren Sie die Join-Spalten und prüfen Sie den Plan.

Unterstützt MySQL FULL OUTER JOIN?

Nein. In MySQL kombinieren Sie LEFT JOIN und RIGHT JOIN mit UNION, um dasselbe Ergebnis zu erhalten.

Wofür wird ein SELF JOIN verwendet?

Ein SELF JOIN vergleicht Zeilen derselben Tabelle, etwa um den Vorgesetzten jedes Mitarbeiters in einer einzigen employees-Tabelle zu finden.

Warum liefert mein Join doppelte Zeilen?

Duplikate entstehen, wenn die Join-Spalte in einer Tabelle nicht eindeutig ist. Prüfen Sie Ihre Schlüssel oder aggregieren Sie die Daten vor dem Join.

Weiterlernen (englische Artikel)

Arbeiten Sie mit Stack Quora

Brauchen Sie Hilfe bei Testing, WordPress oder SEO?

Wir helfen Teams, bessere Software auszuliefern und ihre Websites auszubauen. Erzählen Sie uns, woran Sie arbeiten, und wir schlagen den nächsten Schritt vor.