Zurück zur Artikelliste Artikel
9 Leseminuten

Die perfekte Kombination: SQL-Joins erklärt

Nicht jede Einladung führt zu einer perfekten Übereinstimmung – das Gleiche gilt auch für SQL. In diesem Artikel werden „SQL-JOINs” anhand eines Beispiels mit einer Gästeliste für eine Party erklärt, damit Sie besser verstehen, wie verschiedene JOIN-Typen entscheiden, welche Datensätze im Ergebnis angezeigt werden.

Der Februar ist der Monat der Liebe. Dating-Apps sprechen von Matches, Einladungen zu Valentinstagsveranstaltungen werden verschickt und alle hoffen, dass alles so läuft, wie es soll.

In SQL beschäftigen wir uns ständig mit Übereinstimmungen – nur auf eine praktischere Art und Weise. Daten sind oft über mehrere Tabellen verteilt. Um sie zu analysieren, müssen wir Tabellen anhand übereinstimmender Werte kombinieren. Genau das leisten „SQL-JOINs“. Sie verbinden Zeilen aus verschiedenen Tabellen anhand einer gemeinsamen Spalte und entscheiden, welche Datensätze zusammen im Ergebnis erscheinen.

Für Anfänger kann dies zunächst abstrakt erscheinen. Begriffe wie INNER JOIN oder LEFT JOIN beschreiben präzise Regeln, aber ohne ein klares Bild verliert man leicht den Überblick darüber, was tatsächlich geschieht.

Meistern Sie die Kunst des Abgleichs
Wenn Sie das Rätselraten überspringen und wie ein Profi Abfragen schreiben möchten, ist der Kurs „SQL-JOINs” auf LearnSQL.de genau das Richtige für Sie. Mit 93 praktischen Übungen führt er Sie anhand realer Szenarien von „Es ist kompliziert” zu „SQL-Experte”. Das ist der schnellste Weg, um JOINs zur Selbstverständlichkeit zu machen.

In diesem Artikel verwenden wir eine einfache Metapher zum Valentinstag, um „SQL-JOINs“ auf klare und intuitive Weise zu erklären.

Die Ausgangssituation

Stellen Sie sich vor, Sie organisieren eine Party. Es könnte eine Valentinstagsveranstaltung, eine Party für Singles oder einfach nur ein zwangloses Beisammensein sein – die Details spielen keine Rolle.

Vor der Party erstellen Sie eine Liste der Personen, die Sie eingeladen haben. Die Party findet statt, und danach können Sie sehen, was tatsächlich passiert ist:

  • Einige der eingeladenen Personen sind gekommen.
  • einige der eingeladenen Personen sind nicht erschienen
  • und einige Personen sind gekommen, obwohl sie nicht eingeladen waren

Als Ergebnis erhalten Sie eine zweite Liste: die Personen, die an der Party teilgenommen haben. Jetzt haben Sie zwei Listen:

  • Personen, die eingeladen waren
  • Personen, die erschienen sind

In SQL-Begriffen ergibt dies zwei Tabellen. Eine Tabelle enthält die Personen, die zur Party eingeladen wurden und vor der Veranstaltung erstellt wurde. Die zweite Tabelle enthält die Personen, die tatsächlich anwesend waren, basierend auf dem, was in Wirklichkeit passiert ist. Einige Datensätze erscheinen in beiden Tabellen, andere nur in einer. SQL-JOINs helfen uns, diese Tabellen zu vergleichen und zu entscheiden, welche Datensätze wir gemeinsam im Ergebnis sehen möchten.

invited

id name email
1 Alice alice@email.com
2 Bob bob@email.com
3 Carol carol@email.com
4 Dave dave@email.com

showed_up

id name arrived_at
1 Alice 2026-02-14 19:08:00
3 Carol 2026-02-14 19:22:00
5 Eve 2026-02-14 19:40:00

Alice und Carol waren eingeladen und sind erschienen.
Bob und Dave waren eingeladen, sind aber nicht erschienen.
Eve ist ohne Einladung erschienen.

Der Vergleich dieser beiden Listen liefert unterschiedliche Antworten, je nachdem, was Sie wissen möchten.

INNER JOIN: Die Personen, die eingeladen waren und erschienen sind ❤️

Ein INNER JOIN ist die gängigste Methode, um Tabellen zu kombinieren. Dabei wird nach der „perfekten Übereinstimmung” zwischen Ihren beiden Listen gesucht. In unserem Party-Szenario werden nur die Personen zurückgegeben, die:

  1. auf der Liste „invited” standen.
  2. UND tatsächlich anwesend waren.

Wenn jemand eingeladen war, aber nicht gekommen ist (wie Bob), wird er nicht berücksichtigt. Wenn jemand gekommen ist, aber nicht auf der Liste stand (wie Eve), wird er ebenfalls nicht berücksichtigt. Nur die überlappenden „Übereinstimmungen” werden berücksichtigt.

Hier ist ein Profi-Tipp für Anfänger: INNER JOIN ist der Standard. Wenn Sie in SQL-Datenbanken einfach JOINschreibt, geht die Datenbank davon aus, dass Sie INNER JOIN. Dies ist die „Standardeinstellung” für Datenbeziehungen, da wir in den meisten Fällen nur die Datensätze sehen möchten, bei denen beide Seiten übereinstimmen.

Jetzt können wir ein INNER JOIN schreiben, das nur die eingeladenen Gäste zurückgibt, die anwesend waren:

SELECT
  i.id,
  i.name,
  i.email,
  s.arrived_at
FROM invited AS i
INNER JOIN showed_up AS s
  ON i.id = s.id
ORDER BY s.arrived_at;

Ergebnis

id name email arrived_at
1 Alice alice@email.com 2026-02-14 19:08:00
3 Carol carol@email.com 2026-02-14 19:22:00

Alice und Carol werden angezeigt, da sie id in beiden Tabellen vorhanden ist. Bob und Dave werden ausgeschlossen, weil sie nicht erschienen sind. Eve wird ausgeschlossen, weil sie nicht eingeladen war und es daher keine übereinstimmende Zeile in der Gästeliste gibt.

In der Praxis INNER JOIN beantwortet Fragen wie:

  • Welche eingeladenen Benutzer haben sich angemeldet?
  • Welche Kunden haben eine Bestellung aufgegeben?
  • Welche E-Mails wurden versendet und geöffnet?

Wenn auf beiden Seiten keine Übereinstimmung vorliegt, erscheint der Datensatz einfach nicht im Ergebnis.

LEFT JOIN: Alle, die eingeladen wurden 💌

Ein LEFT JOIN beginnt mit der Tabelle „invited”. Das bedeutet, dass jede eingeladene Person im Ergebnis erscheint – unabhängig davon, ob sie erschienen ist oder nicht.

  • Wenn jemand erschienen ist, sehen Sie seine Anwesenheitsdaten.
  • Wenn sie nicht erschienen ist, enthalten die Spalten der showed_up enthalten NULL. NULL Das bedeutet einfach: Es wurde kein passender Datensatz gefunden.

Hier ist eine LEFT JOIN , das alle eingeladenen Personen zusammen mit ihrer Ankunftszeit anzeigt, wenn sie anwesend waren:

SELECT
  i.id,
  i.name,
  i.email,
  s.arrived_at
FROM invited AS i
LEFT JOIN showed_up AS s
  ON i.id = s.id
ORDER BY i.id;

Ergebnis

id name email arrived_at
1 Alice alice@email.com 2026-02-14 19:08:00
2 Bob bob@email.com NULL
3 Carol carol@email.com 2026-02-14 19:22:00
4 Dave dave@email.com NULL

Bob und Dave erscheinen im Ergebnis, obwohl sie nicht anwesend waren. Das NULL bedeutet lediglich, dass keine übereinstimmende Zeile in der showed_up Tabelle gefunden wurde.

In der Praxis LEFT JOIN ist nützlich, wenn Sie fragen möchten:

  • Wen haben wir eingeladen, auch wenn sie nicht gekommen sind?
  • Welche Benutzer haben sich angemeldet, sich aber nie eingeloggt?
  • Welche Kunden haben nie eine Bestellung aufgegeben?

Aus diesem Grund LEFT JOIN ist eine der am häufigsten verwendeten JOINs in Berichten und Analysen.

Profi-Tipp: Der „sichere” Join

In der Berufswelt LEFT JOIN oft die erste Wahl für das Reporting. Warum? Weil es sicher ist. Es stellt sicher, dass Sie nicht versehentlich Personen aus Ihrem Bericht „löschen”, nur weil sie noch keine Aktion durchgeführt haben. Wenn Sie eine Liste aller Kunden und ihrer Bestellungen wünschen, stellt ein LEFT JOIN sorgt dafür, dass auch Kunden, die noch nichts gekauft haben, mitgezählt werden.

RIGHT JOIN: Alle, die erschienen sind 🤷

Ein RIGHT JOIN funktioniert genauso wie ein LEFT JOIN, aber von der anderen Seite. Es beginnt mit der showed_up Liste statt mit der invited Liste. Das bedeutet:

  • jede Person, die zur Party gekommen ist, im Ergebnis erscheint
  • , wenn sie eingeladen wurde, sehen Sie die Details ihrer Einladung
  • wenn sie nicht eingeladen waren, enthalten die Einladungsspalten NULL

Dies schließt natürlich auch Personen ein, die ohne Einladung erschienen sind.

Hier ist eine RIGHT JOIN , das alle Personen anzeigt, die erschienen sind, unabhängig davon, ob sie eingeladen waren oder nicht:

SELECT
  s.id,
  i.name,
  i.email,
  s.arrived_at
FROM invited AS i
RIGHT JOIN showed_up AS s
  ON i.id = s.id
ORDER BY s.arrived_at;

Ergebnis

id name email arrived_at
1 Alice alice@email.com 2026-02-14 19:08:00
3 Carol carol@email.com 2026-02-14 19:22:00
5 NULL NULL 2026-02-14 19:40:00

Eve erscheint im Ergebnis, obwohl sie nicht eingeladen war. Die NULL Werte in den Einladungsspalten bedeuten lediglich, dass es keinen passenden Eintrag in der invited Tabelle gefunden wurde.

RIGHT JOIN ist in der Praxis weniger gebräuchlich, da man es normalerweise umschreiben kann, indem man LEFT JOIN durch Umkehrung der Tabellenreihenfolge umschreiben kann. Dennoch hilft das Verständnis seiner Funktionsweise dabei, von anderen geschriebenen SQL-Code zu lesen und zu verstehen.

FULL OUTER JOIN: Der vollständige Partybericht 💝

Ein „FULL OUTER JOIN” zeigt alles an. Er kombiniert beide Tabellen und behält alle Datensätze von beiden Seiten bei, unabhängig davon, ob eine Übereinstimmung vorliegt oder nicht.

Das bedeutet, dass Sie sehen:

  • Personen, die eingeladen wurden und erschienen sind
  • Personen, die eingeladen waren, aber nicht gekommen sind
  • Personen, die ohne Einladung erschienen sind

Nichts wird herausgefiltert.

Hier ist ein FULL OUTER JOIN , das den vollständigen Partybericht erzeugt:

SELECT
  i.id AS invited_id,
  i.name,
  i.email,
  s.arrived_at
FROM invited AS i
FULL OUTER JOIN showed_up AS s
  ON i.id = s.id
ORDER BY i.id, s.id;

Ergebnis

invited_id name email arrived_at
1 Alice alice@email.com 2026-02-14 19:08:00
2 Bob bob@email.com NULL
3 Carol carol@email.com 2026-02-14 19:22:00
4 Dave dave@email.com NULL
NULL NULL NULL 2026-02-14 19:40:00

Dieses Ergebnis zeigt die ganze Geschichte:

  • Alice und Carol wurden eingeladen und sind erschienen
  • Bob und Dave wurden eingeladen, kamen aber nicht
  • Eve kam ohne Einladung

FULL OUTER JOIN ist nützlich, wenn Sie sich ein vollständiges Bild machen möchten und keine Datensätze aus einer der beiden Tabellen verlieren möchten. Es ist besonders hilfreich für Audits, Datenprüfungen und Berichte auf hoher Ebene, bei denen fehlende Daten genauso wichtig sind wie übereinstimmende Daten.

Gleiche Daten, unterschiedliche Fragen

Das Wichtigste, was Sie über „SQL-JOINs” wissen sollten, ist Folgendes:

Die Daten ändern sich nicht.
Nur die Frage ändert sich.

Wenn Sie von einem INNER JOIN zu einem LEFT JOIN oder ein FULL OUTER JOIN, ändern Sie nicht die Tabellen. Sie ändern lediglich die Regeln, die festlegen, welche Datensätze in der Ergebnismenge angezeigt werden.

Sobald Sie JOINs nicht mehr als etwas Geheimnisvolles betrachten, sondern als Filter, die auf zwei Listen angewendet werden, lassen sie sich viel leichter verstehen.

Diese veränderte Perspektive ist oft der Moment, in dem Anfänger JOINs endlich „verstehen”.

Von Partygästen zurück zu SQL-Tabellen

Das Party-Beispiel dient nur dazu, die Logik sichtbar zu machen. Das gleiche Muster taucht überall in der realen SQL-Arbeit auf.

Zum Beispiel:

  • Kunden und Bestellungen
  • Benutzer und Anmeldungen
  • gesendete E-Mails und geöffnete E-Mails

In jedem Fall arbeiten Sie mit zwei Listen und stellen Variationen derselben Fragen:

  • Wer erscheint in beiden Listen?
  • Wer erscheint nur auf einer Seite?
  • Wen möchte ich in mein Ergebnis aufnehmen, auch wenn etwas fehlt?

SQL-JOINs existieren, um genau diese Fragen zu beantworten. Sobald Sie verstanden haben, wie sie mit einer einfachen Gästeliste funktionieren, ist es ganz einfach, dieselbe Logik auf echte Tabellen anzuwenden.

Fazit: Wählen Sie den JOIN, der zur Frage passt

In SQL gibt es, wie in der Liebe, keine einzige „beste” Übereinstimmung. Es gibt nur den JOIN, der zu Ihrer Frage passt.

  • Manchmal möchten Sie nur bestätigte, gegenseitige Übereinstimmungen (INNER JOIN).
  • Manchmal müssen Sie sehen, wer noch nicht geantwortet hat (LEFT JOIN).
  • Manchmal möchten Sie ein vollständiges, chaotisches, schönes Bild aller Beteiligten (FULL OUTER JOIN).

Sobald Sie JOINs nicht mehr als abstrakten Code betrachten, sondern als Logik von Beziehungen, erschließt sich Ihnen die wahre Leistungsfähigkeit relationaler Datenbanken.

Das Verständnis der Theorie ist ein großartiger erster Schritt, aber die Meisterschaft kommt durch Übung. Wenn Sie aufhören möchten, Ihre Syntax zu hinterfragen, und stattdessen komplexe Abfragen mit Zuversicht schreiben möchten, ist der Kurs „SQL-JOINs der perfekte nächste Schritt. Sie werden über die Gästeliste hinausgehen und mit professionellen Datensätzen arbeiten, um die Muskelgedächtnis zu entwickeln, das Sie für eine Karriere im Bereich Daten benötigen.

Und wenn Sie bereit sind für eine ernsthafte, langfristige Beziehung mit Ihrer Karriere, erhalten Sie mit dem SQL-Paket „Alle für immer“ lebenslangen Zugriff auf alle von uns angebotenen Kurse – von grundlegenden Abfragen bis hin zu fortgeschrittener Datenanalyse. Es ist das ultimative Geschenk an Ihr zukünftiges Ich.

Lassen Sie Ihre Daten nicht „kompliziert” bleiben. Beginnen Sie noch heute Ihre Reise zu einer perfekten Übereinstimmung.