JOINs sind ein zentrales Werkzeug in SQL, mit dem Daten aus mehreren Tabellen kombiniert werden können. Ohne JOINs wäre es kaum möglich, komplexe Zusammenhänge zwischen Daten sinnvoll abzubilden oder abzufragen. Gerade für SQL-Einsteiger kann das Konzept von JOINs jedoch verwirrend sein, da es verschiedene Arten gibt, die sich in ihrem Verhalten deutlich unterscheiden.
In diesem Artikel lernst du die drei wichtigsten JOIN-Typen kennen: INNER JOIN, OUTER JOIN (inklusive LEFT, RIGHT und FULL JOIN) sowie CROSS JOIN. Ziel ist es, dir diese Konzepte möglichst einfach und anschaulich zu erklären – ganz ohne theoretischen Overkill. Nach dem Lesen wirst du sicherer im Umgang mit JOINs sein und genau wissen, wann du welchen JOIN einsetzen solltest.
Die Inhalte richten sich vor allem an Anfänger und Anwender, die ihre Kenntnisse rund um JOINs vertiefen und praktische Beispiele verstehen möchten.

Grundlage: Was ist ein JOIN?
Bevor wir in die verschiedenen JOIN-Typen einsteigen, lohnt sich ein kurzer Blick auf das Grundprinzip: Was macht ein JOIN überhaupt?
Stell dir Datenbanken als Sammlungen von Tabellen vor – jede Tabelle speichert Daten zu einem bestimmten Thema (z. B. Kunden, Bestellungen, Produkte). Die einzelnen Tabellen stehen über sogenannte Schlüssel (meist Primär- und Fremdschlüssel) miteinander in Beziehung.
Ein JOIN ist die SQL-Methode, um diese Beziehungen in einer Abfrage herzustellen. So kannst du Informationen aus mehreren Tabellen kombinieren – zum Beispiel, um zu sehen, welcher Kunde welche Bestellung aufgegeben hat.
Das allgemeine Syntax-Grundgerüst für einen JOIN sieht so aus:
SELECT spalten
FROM tabelle1
JOIN_TYP tabelle2 ON tabelle1.schlüssel = tabelle2.schlüssel;
Dabei ersetzt du JOIN_TYP
durch den gewünschten JOIN-Typ, z. B. INNER JOIN
oder LEFT JOIN
.
Beispiel-Tabellen für alle JOINs
Damit die JOINs im weiteren Verlauf anschaulich und nachvollziehbar bleiben, verwenden wir durchgehend zwei Beispiel-Tabellen: Kunden und Bestellungen. Diese Tabellen sind bewusst einfach gehalten und enthalten nur die nötigsten Informationen.
Kunden-Tabelle:
KundenID | Name |
---|---|
1 | Anna |
2 | Bert |
3 | Clara |
Bestellungen-Tabelle:
BestellID | KundenID | Produkt |
---|---|---|
101 | 1 | Laptop |
102 | 1 | Maus |
104 | 3 | Tastatur |
Hinweise:
- Bert (KundenID 2) hat keine Bestellung aufgegeben.
- Die BestellID 103 fehlt absichtlich – dies simuliert eine Lücke in den Daten.
Diese Tabellen dienen als Grundlage für alle weiteren JOIN-Beispiele im Artikel.
INNER JOIN: Nur übereinstimmende Daten
Der INNER JOIN ist der am häufigsten verwendete JOIN-Typ in SQL. Er verknüpft nur die Datensätze, bei denen die Verknüpfungsbedingung erfüllt ist – also dort, wo die Werte in beiden Tabellen zusammenpassen.
Logik: „Zeig mir nur die Paare, die in beiden Tabellen vorhanden sind!“
Beispiel:
SELECT Kunden.Name, Bestellungen.Produkt
FROM Kunden
INNER JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID;
Ergebnis:
Name | Produkt |
---|---|
Anna | Laptop |
Anna | Maus |
Clara | Tastatur |
Visualisierung:
Kunden Bestellungen [Anna] ---- [Laptop] [Anna] ---- [Maus] [Clara] ---- [Tastatur] (Bert "fällt raus")
Wann verwenden?
- Wenn du nur Datensätze brauchst, die in beiden Tabellen vorkommen
- Typischer Anwendungsfall: „Welche Kunden haben Bestellungen aufgegeben?“
OUTER JOIN: Auch nicht übereinstimmende Daten
Ein OUTER JOIN gibt zusätzlich auch jene Zeilen aus, die keine passende Verbindung in der jeweils anderen Tabelle haben. Das ist besonders hilfreich, wenn du auch „unvollständige“ Informationen sehen möchtest – z. B. alle Kunden, auch wenn sie keine Bestellung aufgegeben haben.
Es gibt drei Varianten:
a) LEFT JOIN – Alle Zeilen aus der linken Tabelle
Beispiel:
SELECT Kunden.Name, Bestellungen.Produkt
FROM Kunden
LEFT JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID;
Ergebnis:
Name | Produkt |
---|---|
Anna | Laptop |
Anna | Maus |
Bert | NULL |
Clara | Tastatur |
Visualisierung:
Kunden (alle) [Anna] ---- [Laptop] [Anna] ---- [Maus] [Bert] ---- (kein Eintrag) [Clara] ---- [Tastatur]
b) RIGHT JOIN – Alle Zeilen aus der rechten Tabelle
Beispiel:
SELECT Kunden.Name, Bestellungen.Produkt
FROM Kunden
RIGHT JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID;
Angenommen, es gäbe einen zusätzlichen Eintrag mit BestellID 103 (ohne zugehörigen Kunden):
Name | Produkt |
---|---|
Anna | Laptop |
Anna | Maus |
Clara | Tastatur |
NULL | Kopfhörer |
c) FULL JOIN – Kombination aus LEFT und RIGHT JOIN
Beispiel:
SELECT Kunden.Name, Bestellungen.Produkt
FROM Kunden
FULL JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID;
Ergebnis: Zeigt alle Kunden und alle Bestellungen – auch die ohne passende Zuordnung.
Wann verwenden?
- LEFT JOIN: Wenn du alle Zeilen aus der linken Tabelle brauchst (z. B. „Alle Kunden anzeigen – auch ohne Bestellungen“)
- RIGHT JOIN: Wenn du alle Einträge aus der rechten Tabelle brauchst (z. B. „Alle Bestellungen – auch ohne Kundenbezug“)
- FULL JOIN: Wenn du nichts verlieren willst und alles sehen möchtest
CROSS JOIN – Jede Kombination (kartesisches Produkt)
Ein CROSS JOIN kombiniert jede Zeile der ersten Tabelle mit jeder Zeile der zweiten Tabelle – unabhängig von einem gemeinsamen Schlüssel oder einer Bedingung. Das Ergebnis ist das sogenannte kartesische Produkt der beiden Tabellen.
Dieses Verhalten kann schnell zu einer großen Anzahl von Ergebnissen führen und wird daher nur in speziellen Fällen genutzt – etwa zur Generierung von Testdaten oder Kombinationslisten.
Beispiel:
SELECT Kunden.Name, Bestellungen.Produkt
FROM Kunden
CROSS JOIN Bestellungen;
Auszug aus dem Ergebnis (bei 3 Kunden und 3 Bestellungen):
Name | Produkt |
---|---|
Anna | Laptop |
Anna | Maus |
Anna | Tastatur |
Bert | Laptop |
Bert | Maus |
Bert | Tastatur |
Clara | Laptop |
Clara | Maus |
Clara | Tastatur |
Visualisierung:
Kunden × Bestellungen: Anna + Laptop, Anna + Maus, Anna + Tastatur Bert + Laptop, Bert + Maus, Bert + Tastatur Clara + Laptop, Clara + Maus, Clara + Tastatur
Wann nutzen?
- Zur Erzeugung aller möglichen Kombinationen zweier Merkmalsgruppen (z. B. Farben × Größen)
- Bei Daten- oder UI-Tests, wenn alle Kombinationsmöglichkeiten durchgespielt werden sollen
- Nicht empfohlen für produktive JOINs mit großen Tabellen – das Ergebnis explodiert schnell
Vergleichstabelle: INNER JOIN vs. OUTER JOIN vs. CROSS JOIN
Die folgende Tabelle fasst die wichtigsten Unterschiede der JOIN-Typen übersichtlich zusammen:
JOIN-Typ | Beschreibung | NULL-Werte möglich? | Typischer Anwendungsfall |
---|---|---|---|
INNER JOIN | Nur übereinstimmende Zeilen aus beiden Tabellen | ❌ | Nur Kunden mit Bestellungen anzeigen |
LEFT JOIN | Alle Zeilen aus der linken Tabelle + passende aus der rechten | ✅ (rechte Seite) | Alle Kunden inkl. Bestellungen (auch wenn keine) |
RIGHT JOIN | Alle Zeilen aus der rechten Tabelle + passende aus der linken | ✅ (linke Seite) | Alle Bestellungen inkl. Kunden (auch wenn gelöscht) |
FULL JOIN | Kombination aus LEFT und RIGHT JOIN | ✅ (beidseitig) | Kompletter Datenabgleich beider Tabellen |
CROSS JOIN | Alle Kombinationen beider Tabellen (kartesisches Produkt) | ❌ | Alle möglichen Kombinationen erzeugen (z. B. Farben × Größen) |
Häufige Fehler & Tipps
Beim Arbeiten mit JOINs passieren häufig vermeidbare Fehler – vor allem, wenn man die JOIN-Logik nicht ganz verstanden hat. Hier sind die gängigsten Fallstricke und praktische Tipps:
Typische Fehler
- Fehler #1: ON-Bedingung vergessen
Wenn man bei einem JOIN die ON-Klausel vergisst, erzeugt das (je nach Datenbank) unbeabsichtigt einen CROSS JOIN. Das Ergebnis explodiert schnell. - Fehler #2: LEFT JOIN statt INNER JOIN (oder umgekehrt)
Wer aus Gewohnheit LEFT JOIN schreibt, obwohl er nur passende Datensätze braucht, bekommt unerwartete NULL-Werte im Ergebnis.
Best Practices & Tipps
- Tipp #1: JOINs mit kleinen Test-Tabellen ausprobieren, um das Ergebnis besser zu verstehen.
- Tipp #2: Wenn
FULL JOIN
verwendet wird: sicherstellen, dass man wirklich Daten von beiden Seiten benötigt. Oft reicht einLEFT JOIN
oderRIGHT JOIN
. - Tipp #3: Aliasse für Tabellen nutzen, um die Abfragen kürzer und lesbarer zu machen.
Beispiel:SELECT k.Name, b.Produkt FROM Kunden AS k INNER JOIN Bestellungen AS b ON k.KundenID = b.KundenID;
Profi-Tipp: Wenn du JOINs häufig nutzt, lohnt es sich, das Ergebnis gezielt mit IS NULL
oder IS NOT NULL
zu prüfen – besonders bei LEFT/RIGHT JOINs.
Zusammenfassung
JOINs sind das Herzstück von SQL, wenn es darum geht, Daten aus mehreren Tabellen sinnvoll zu verknüpfen. Hier die Kernpunkte im Überblick:
- INNER JOIN: Gibt nur Datensätze zurück, die in beiden Tabellen übereinstimmen. Perfekt, wenn nur vollständige Paare relevant sind.
- OUTER JOIN (LEFT, RIGHT, FULL): Zeigt auch Datensätze, die in einer Tabelle ohne passenden Gegenpart in der anderen stehen. So gehen keine Daten verloren.
- CROSS JOIN: Erzeugt das kartesische Produkt – jede Kombination aller Zeilen beider Tabellen. Vorsicht, bei großen Tabellen sehr umfangreich.
Mit diesem Wissen bist du bestens gerüstet, um JOINs sicher und gezielt in deinen SQL-Abfragen einzusetzen und komplexe Datenbeziehungen einfach zu verstehen.
Bonus: SQL Join Cheat Sheet

Um dir den Einstieg und die tägliche Arbeit mit JOINs zu erleichtern, bieten wir dir ein praktisches PDF-Cheat Sheet mit einer Übersicht aller wichtigen SQL-JOIN-Typen.
Hier kannst du das SQL-Joins Cheat Sheet kostenlos herunterladen und deine SQL-Kenntnisse weiter verbessern: SQL JOIN Cheat Sheet (PDF)
Sortieren mit ORDER BY: ASC und DESC verstehen
Daten aus einer Datenbank liegen oft in unsortierter Form vor....
Artikel lesenWas ist ein Datenbankschema?
Bevor eine Stadt gebaut wird, gibt es immer einen Plan:...
Artikel lesenStored Procedures vs. normale Abfragen – wann lohnt sich was?
Wer mit Datenbanken arbeitet, steht früher oder später vor der...
Artikel lesenMySQL verstehen: Alles zu Grundlagen, Funktionen & Anwendungsbeispielen
MySQL ist eines der weltweit beliebtesten Open-Source-Relational-Database-Management-Systeme (RDBMS). Es bildet...
Artikel lesen