Zum Inhalt springen
SemaTrain

SQL-WISSEN · Mehrere Tabellen

JOINs und relationale Verknüpfungen

Wie JOINs Zeilen aus mehreren Relationen anhand einer Bedingung verbinden und warum JOIN-Typ, Kardinalität und Filterposition das Ergebnis verändern.

Kurzdefinition

JOINs kombinieren Zeilen aus mehreren Tabellen. Bei qualifizierten INNER- und OUTER-JOINs bestimmt eine Join-Bedingung, welche Zeilen als passend gelten; ein CROSS JOIN bildet dagegen das kartesische Produkt ohne solche Bedingung. Welche Zeilen im Ergebnis erhalten bleiben, hängt vom JOIN-Typ und von zusätzlichen Filtern ab.

Grundmuster

INNER JOIN liefert nur passende Kombinationen. LEFT JOIN bewahrt zusätzlich Zeilen der linken Seite, auch wenn rechts keine passende Zeile vorhanden ist.

INNER JOIN
SELECT k.name, b.id, b.betrag
FROM kunde AS k
JOIN bestellung AS b
  ON b.kunde_id = k.id;
LEFT JOIN
SELECT k.name, b.id
FROM kunde AS k
LEFT JOIN bestellung AS b
  ON b.kunde_id = k.id;

Kardinalität und Ergebnisgröße

Ein JOIN erzeugt nicht automatisch eine Eins-zu-eins-Beziehung. Mehrere passende Zeilen auf einer Seite können mehrere Ergebniszeilen erzeugen.

Deshalb ist die fachliche Kardinalität ein zentraler Teil der Fehleranalyse.

Kritisch unterscheiden

  • JOIN-Bedingung und nachgelagerte Filterbedingung erfüllen unterschiedliche Aufgaben.
  • Ein LEFT JOIN kann durch einen ungeeigneten Filter auf Spalten der rechten Tabelle faktisch das Verhalten eines INNER JOIN annehmen.
  • JOIN-Semantik ist vom Indexeinsatz zu trennen: Ein Index kann die Ausführung beeinflussen, aber nicht die fachliche Bedeutung der Join-Bedingung.

Typische Fehler und Missverständnisse

  • Eine fachlich notwendige Join-Bedingung wegzulassen oder zu weit zu formulieren und dadurch unerwartet viele Kombinationen zu erzeugen.
  • Eine Eins-zu-viele-Beziehung als Eins-zu-eins zu interpretieren.
  • RIGHT oder FULL JOIN ohne Prüfung der konkreten Produktversion als überall identisch verfügbar anzunehmen.

Praxisfall

Kunden ohne Bestellung finden

Sie möchten alle Kunden sehen und zusätzlich erkennen, welche davon noch keine Bestellung haben.

  • Welcher JOIN-Typ bewahrt Kunden ohne passende Bestellung?
  • Wo sollte die Beziehung zwischen Kunde und Bestellung formuliert werden?
  • Wie erkennen Sie anschließend fehlende rechte Zeilen?

Selbsttest

Verständnis prüfen

1. Was ist der zentrale Unterschied zwischen INNER JOIN und LEFT JOIN?

Antwortmöglichkeiten zu Frage 1
Antwort und Begründung anzeigen

LEFT JOIN bewahrt die Zeilen der linken Seite auch ohne Treffer auf der rechten Seite.

2. Warum kann ein JOIN mehr Zeilen liefern als beide Ausgangstabellen einzeln erwarten lassen?

Antwortmöglichkeiten zu Frage 2
Antwort und Begründung anzeigen

Die Ergebnisgröße folgt der tatsächlichen Kardinalität der passenden Zeilen. Mehrere Treffer können zu mehreren Kombinationen führen.

Transfer

Auf die eigene Praxis übertragen

Prüfen Sie bei einer realen Mehrtabellenabfrage nicht nur die SQL-Syntax, sondern zeichnen Sie vorab die erwartete Kardinalität der Beziehungen. Vergleichen Sie danach Erwartung und Ergebniszeilen.

Weiterlernen

Verknüpfungen

Quellen, Prüfstand und Grenzen

Fachliche Nachvollziehbarkeit

Quellen geprüft
2026-09-18
Versionsrahmen
Gemeinsamer SQL-Kern mit explizit gekennzeichneten Varianten für SQLite 3.53.4, PostgreSQL 18 und MySQL 8.4 LTS.
Aussagebereich
JOIN-Semantik wird systemübergreifend erklärt. SQLite unterstützt RIGHT und FULL OUTER JOIN seit Version 3.39.0.
Originalität
Faktenbasis aus Primärquellen; Einordnung, Struktur, Beispiele, Selbsttests und Transfer sind eigenständige SemaTrain-Inhalte.

Grenzen

  • Produktspezifische Syntax und Verhalten können sich zwischen SQLite, PostgreSQL und MySQL unterscheiden.
  • Versionsabhängige Aussagen gelten für den im Quellenbereich ausgewiesenen Prüfstand.

Primärquellen

Projekt-Release-Dokumentation

SQLite Release 3.39.0

SQLite

Version: SQLite 3.39.0

Bezug: Einführung von RIGHT und FULL OUTER JOIN.

Hersteller-Primärdokumentation

MySQL 8.4 JOIN Clause

MySQL

Version: MySQL 8.4 LTS

Bezug: INNER, LEFT und RIGHT JOIN, ON, USING und Portabilitätshinweise.