SQL: mit einem „INNER JOIN“ Tabellen verbinden

Häufig sind Informationen über verschiedene Tabellen verteilt, beispielsweise in einer Tabelle stehen die Personen-Daten und in einer anderen Tabelle die dazugehörigen Adressen. Mit einem INNER JOIN kannst du Daten aus solchen Tabellen miteinander verbinden und kombinieren.

In diesem Artikel lernst du, was ein INNER JOIN ist, wie er funktioniert, und wie du ihn effektiv einsetzen kannst. Wir verwenden dafür Beispiele mit der Datenbank „Datenbank“ und den Tabellen „Personen“ und einer weiteren Tabelle „Adressen“.


Was ist ein INNER JOIN?

Ein INNER JOIN ist ein SQL-Befehl, der Datensätze aus zwei oder mehr Tabellen miteinander verknüpft. Dabei werden nur die Zeilen zurückgegeben, bei denen ein Zusammenhang besteht – das heißt, es müssen übereinstimmende Werte in den verknüpften Spalten der beiden Tabellen vorhanden sein.

Grundsätzliche Struktur des INNER JOIN

Die allgemeine Syntax lautet:

SELECT tabelle1.spalte1, tabelle2.spalte2, ...
FROM tabelle1
INNER JOIN tabelle2
ON tabelle1.spalte = tabelle2.spalte;

Erklärung:

  1. tabelle1 und tabelle2: Die beiden Tabellen, die du miteinander verknüpfst.
  2. INNER JOIN: Der Befehl zum Verbinden der beiden Tabellen.
  3. ON tabelle1.spalte = tabelle2.spalte: Die Bedingung, die angibt, welche Spalten miteinander verbunden werden sollen. Nur Datensätze mit passenden Werten in diesen Spalten werden zurückgegeben.

Beispiel: Die Tabellen „Personen“ und „Adressen“

Stell dir vor, wir haben zwei Tabellen in der Datenbank:

Erste Tabelle: Personen

IDVornameNachname
1AlbertEinstein
2MarieCurie
3MahatmaGandhi

Zweite Tabelle: Adressen

IDPersonenIDStadtLand
11PrincetonUSA
22ParisFrankreich
34Cape TownSüdafrika

In der Tabelle Adressen gibt es eine Spalte namens „PersonenID“, die mit der Spalte „ID“ in der Tabelle Personen übereinstimmt. Diese Spalte verbindet beide Tabellen.


Einfache Beispiele für INNER JOIN

Beispiel 1: Verknüpfen von Personen und Adressen

Mit dieser Abfrage verknüpfst du die beiden Tabellen und zeigst eine Liste aller Personen mit ihren zugehörigen Städten an:

SELECT Personen.Vorname, Personen.Nachname, Adressen.Stadt, Adressen.Land
FROM Personen
INNER JOIN Adressen
ON Personen.ID = Adressen.PersonenID;

Ergebnis: | Vorname | Nachname | Stadt | Land | |———–|————|————|———–| | Albert | Einstein | Princeton | USA | | Marie | Curie | Paris | Frankreich|


Beispiel 2: Ergebnisse filtern mit WHERE

Angenommen, du möchtest nur Personen auflisten, die in „Frankreich“ leben, kannst du eine zusätzliche Bedingung mit WHERE verwenden:

SELECT Personen.Vorname, Personen.Nachname, Adressen.Stadt, Adressen.Land
FROM Personen
INNER JOIN Adressen
ON Personen.ID = Adressen.PersonenID
WHERE Adressen.Land = 'Frankreich';

Ergebnis: | Vorname | Nachname | Stadt | Land | |———–|————|————|————-| | Marie | Curie | Paris | Frankreich |


Beispiel 3: Mehrere Tabellen JOINen

Du kannst INNER JOIN auch verwenden, um mehr als zwei Tabellen zu verbinden. Angenommen, es gibt eine dritte Tabelle „Berufe“, die den Beruf jeder Person enthält:

IDPersonenIDBeruf
11Physiker
22Wissenschaftlerin
33Politiker

So sieht die Abfrage aus, bei der alle drei Tabellen verknüpft werden:

SELECT Personen.Vorname, Adressen.Stadt, Adressen.Land, Berufe.Beruf
FROM Personen
INNER JOIN Adressen ON Personen.ID = Adressen.PersonenID
INNER JOIN Berufe ON Personen.ID = Berufe.PersonenID;

Ergebnis: | Vorname | Stadt | Land | Beruf | |———–|————-|————|———————| | Albert | Princeton | USA | Physiker | | Marie | Paris | Frankreich | Wissenschaftlerin |


Wichtige Hinweise zu INNER JOIN

  1. Genaue Verknüpfungen sind essentiell: Wenn die Bedingung ON nicht korrekt spezifiziert wird, erhältst du entweder keine oder unerwartete Ergebnisse. Immer sicherstellen, dass die Beziehungen zwischen den Tabellen stimmen.
  2. Ausgabe hängt von vorhandenen Verknüpfungen ab: Hat eine Person keine Adresse, wird diese bei INNER JOIN nicht angezeigt, da keine Verbindung besteht (siehe ID 3 „Mahatma Gandhi“ in Beispiel 1).

Unterstützung durch Datenbankplattformen

INNER JOIN ist Teil des SQL-Standards und wird daher durch nahezu alle relationalen Datenbanken unterstützt. Trotzdem gibt es manchmal praktische Unterschiede in der Syntax oder zusätzlichen Funktionen. Hier ein Überblick:

PlattformINNER JOIN UnterstützungBemerkung
MariaDBJaStandard vollständig unterstützt
MSSQLJaUnterstützt zusätzlich OUTER-Funktionen
MySQLJaGenau wie MariaDB
OracleJaZusätzliche JOIN-Typen wie FULL OUTER
SQLiteJaBietet INNER JOIN nach Standard

Fazit

Der INNER JOIN-Befehl ist eine unverzichtbare Funktion in der Arbeit mit relationalen Datenbanken. Er hilft dir, Informationen aus mehreren Tabellen zu kombinieren und effizient abzufragen. Dank seiner Verankerung im SQL-Standard wird INNER JOIN von fast allen Datenbankplattformen unterstützt, wobei nur kleine Unterschiede in Spezialfunktionen auftreten.