Das Verknüpfen von Tabellen ist eines der wichtigsten Konzepte in SQL Server. Damit kombinierst du Daten aus mehreren Tabellen zu aussagekräftigen Berichten und Analysen. Egal, ob du komplexe Berichte erstellst oder Daten analysierst: Wer mit SQL entwickelt, muss verstehen, wie Joins funktionieren.
In diesem umfassenden Guide gehen wir jeden Join-Typ in SQL Server mit praktischen Beispielen, klaren Erklärungen und realistischen Szenarien durch.
🔖 Kurzreferenz: Willst du schnell etwas nachschlagen? Schau dir unser SQL JOIN Cheat Sheet mit allen JOIN-Typen, visuellen Diagrammen und Codebeispielen an einem Ort an.
SQL Server Joins verstehen
SQL Server Joins sind Operationen, die Zeilen aus zwei oder mehr Tabellen anhand einer gemeinsamen Spalte kombinieren. Die gängigsten Join-Typen sind:
- INNER JOIN: Liefert nur übereinstimmende Datensätze aus beiden Tabellen
- LEFT JOIN: Liefert alle Datensätze der linken Tabelle plus die übereinstimmenden Datensätze der rechten Tabelle
- RIGHT JOIN: Liefert alle Datensätze der rechten Tabelle plus die übereinstimmenden Datensätze der linken Tabelle
- FULL OUTER JOIN: Liefert alle Datensätze, sobald es in einer der beiden Tabellen eine Übereinstimmung gibt
Beispieldaten anlegen
Für unsere Beispiele verwenden wir zwei einfache Tabellen, die ein typisches Business-Szenario abbilden:
Tabelle Orders:
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
Product NVARCHAR(50),
OrderDate DATE
);
INSERT INTO Orders VALUES
(1, 1, 'Laptop', '2024-01-15'),
(2, 2, 'Mouse', '2024-01-16'),
(3, 3, 'Keyboard', '2024-01-17');
| OrderID | CustomerID | Product | OrderDate |
|---|---|---|---|
| 1 | 1 | Laptop | 2024-01-15 |
| 2 | 2 | Maus | 2024-01-16 |
| 3 | 3 | Tastatur | 2024-01-17 |
Tabelle Customers:
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
Name NVARCHAR(50),
City NVARCHAR(50)
);
INSERT INTO Customers VALUES
(1, 'John Doe', 'New York'),
(2, 'Jane Smith', 'Los Angeles'),
(4, 'Alex Johnson', 'Chicago');
| CustomerID | Name | City |
|---|---|---|
| 1 | John Doe | New York |
| 2 | Jane Smith | Los Angeles |
| 4 | Alex Johnson | Chicago |
INNER JOIN
Ein INNER JOIN liefert nur die Zeilen, die in beiden Tabellen einen übereinstimmenden Wert haben. Das ist der am häufigsten verwendete Join-Typ und ideal, wenn du nur Datensätze sehen willst, die in beiden Tabellen vorhanden sind.
Wann du INNER JOIN verwendest
- Wenn du Daten brauchst, die in beiden Tabellen existieren
- Für Berichte, die vollständige Beziehungen zeigen
- Wenn unvollständige Datensätze ausgeschlossen werden sollen
SQL-Abfragebeispiel
SELECT
o.OrderID,
c.Name,
c.City,
o.Product,
o.OrderDate
FROM Orders o
INNER JOIN Customers c ON o.CustomerID = c.CustomerID;
Ergebnis
| OrderID | Name | City | Product | OrderDate |
|---|---|---|---|---|
| 1 | John Doe | New York | Laptop | 2024-01-15 |
| 2 | Jane Smith | Los Angeles | Maus | 2024-01-16 |
Wichtige Punkte:
- Nur 2 Zeilen werden zurückgegeben (OrderID 3 fehlt, weil CustomerID 3 in der Tabelle Customers nicht existiert)
- Nur Kunden, die Bestellungen aufgegeben haben, erscheinen im Ergebnis
- Die Join-Bedingung (
o.CustomerID = c.CustomerID) bestimmt, welche Zeilen übereinstimmen
LEFT JOIN
Ein LEFT JOIN (auch LEFT OUTER JOIN genannt) liefert alle Zeilen der linken Tabelle plus alle übereinstimmenden Zeilen der rechten Tabelle. Gibt es keine Übereinstimmung, erscheinen NULL-Werte in den Spalten der rechten Tabelle.
Wann du LEFT JOIN verwendest
- Wenn du alle Datensätze der Haupttabelle (linke Tabelle) brauchst
- Für Berichte, die Datenlücken oder fehlende Beziehungen zeigen
- Wenn du Datensätze ohne Übereinstimmung finden willst
SQL-Abfragebeispiel
SELECT
o.OrderID,
c.Name,
c.City,
o.Product,
o.OrderDate
FROM Orders o
LEFT JOIN Customers c ON o.CustomerID = c.CustomerID;
Ergebnis
| OrderID | Name | City | Product | OrderDate |
|---|---|---|---|---|
| 1 | John Doe | New York | Laptop | 2024-01-15 |
| 2 | Jane Smith | Los Angeles | Maus | 2024-01-16 |
| 3 | NULL | NULL | Tastatur | 2024-01-17 |
Wichtige Punkte:
- Alle 3 Bestellungen erscheinen im Ergebnis (alle Daten der linken Tabelle bleiben erhalten)
- OrderID 3 zeigt NULL bei den Kundendaten, weil CustomerID 3 in der Tabelle Customers nicht existiert
- Praktisch, um Bestellungen ohne gültige Kundendaten zu finden
RIGHT JOIN
Ein RIGHT JOIN (auch RIGHT OUTER JOIN genannt) liefert alle Zeilen der rechten Tabelle plus alle übereinstimmenden Zeilen der linken Tabelle. Gibt es keine Übereinstimmung, erscheinen NULL-Werte in den Spalten der linken Tabelle.
Wann du RIGHT JOIN verwendest
- Wenn du alle Datensätze der rechten Tabelle brauchst
- Seltener als LEFT JOIN (lässt sich meist als LEFT JOIN umschreiben)
- Praktisch, wenn die „Haupt“-Daten in der zweiten Tabelle liegen
SQL-Abfragebeispiel
SELECT
o.OrderID,
c.Name,
c.City,
o.Product,
o.OrderDate
FROM Orders o
RIGHT JOIN Customers c ON o.CustomerID = c.CustomerID;
Ergebnis
| OrderID | Name | City | Product | OrderDate |
|---|---|---|---|---|
| 1 | John Doe | New York | Laptop | 2024-01-15 |
| 2 | Jane Smith | Los Angeles | Maus | 2024-01-16 |
| NULL | Alex Johnson | Chicago | NULL | NULL |
Wichtige Punkte:
- Alle 3 Kunden erscheinen im Ergebnis (alle Daten der rechten Tabelle bleiben erhalten)
- Alex Johnson zeigt NULL bei den Bestelldaten, weil er noch keine Bestellung aufgegeben hat
- Praktisch, um Kunden ohne Käufe zu finden
FULL OUTER JOIN
Ein FULL OUTER JOIN (oder einfach FULL JOIN) liefert alle Zeilen, sobald es in einer der beiden Tabellen eine Übereinstimmung gibt. Er kombiniert die Ergebnisse von LEFT und RIGHT Joins und zeigt NULL-Werte, wo es auf einer Seite keine Übereinstimmung gibt.
Wann du FULL OUTER JOIN verwendest
- Wenn du alle Datensätze aus beiden Tabellen brauchst
- Für umfassende Datenanalysen
- Wenn du alle Beziehungen und Lücken zwischen Tabellen ermitteln willst
SQL-Abfragebeispiel
SELECT
o.OrderID,
c.Name,
c.City,
o.Product,
o.OrderDate
FROM Orders o
FULL OUTER JOIN Customers c ON o.CustomerID = c.CustomerID;
Ergebnis
| OrderID | Name | City | Product | OrderDate |
|---|---|---|---|---|
| 1 | John Doe | New York | Laptop | 2024-01-15 |
| 2 | Jane Smith | Los Angeles | Maus | 2024-01-16 |
| 3 | NULL | NULL | Tastatur | 2024-01-17 |
| NULL | Alex Johnson | Chicago | NULL | NULL |
Wichtige Punkte:
- Alle 4 möglichen Zeilen erscheinen im Ergebnis
- Zeigt sowohl verwaiste Bestellungen (OrderID 3) als auch Kunden ohne Bestellungen (Alex Johnson)
- Vereint die umfassende Sicht von LEFT und RIGHT Joins
- Das vollständigste Bild der Beziehung zwischen den Tabellen
Das Wichtigste in Kürze
Wer SQL Server Joins versteht, fragt Datenbanken effektiv ab. Hier eine Kurzübersicht:
| Join-Typ | Liefert | Anwendungsfall |
|---|---|---|
| INNER JOIN | Nur übereinstimmende Datensätze | Am häufigsten; wenn du vollständige Beziehungen brauchst |
| LEFT JOIN | Alle links + übereinstimmende rechts | Wenn die linke Tabelle primär ist; fehlende Daten rechts finden |
| RIGHT JOIN | Alle rechts + übereinstimmende links | Seltener; wenn die rechte Tabelle primär ist |
| FULL OUTER JOIN | Alle Datensätze aus beiden | Vollständige Analyse; alle Beziehungen und Lücken finden |
Best Practices
-
Verwende Tabellen-Aliase (
ofür Orders,cfür Customers), damit Abfragen übersichtlicher werden - Starte mit INNER JOIN, wenn du unsicher bist, und passe dann je nach Anforderung an
- Nutze LEFT JOIN häufiger als RIGHT JOIN, das ist besser lesbar
-
Gib die Join-Bedingung immer mit der
ON-Klausel an - Denk an die Performance – Joins auf indizierten Spalten sind schneller
Tipps zum Üben
So meisterst du SQL Server Joins:
- Starte mit kleinen Datensätzen wie in den Beispielen oben
- Zeichne Venn-Diagramme, um zu visualisieren, was jeder Join liefert
- Experimentiere mit verschiedenen Tabellenstrukturen und Beziehungen
- Übe mit SQL Server Management Studio oder Beekeeper Studio
- Teste Grenzfälle wie NULL-Werte und fehlende Beziehungen
Denk dran: Joins sind die Grundlage relationaler Datenbanken. Sobald du sie beherrschst, kannst du leistungsstarke Abfragen schreiben, die aussagekräftige Erkenntnisse aus deinen Daten gewinnen.
Beekeeper Studio ist eine kostenlose & quelloffene Datenbank-GUI
Das beste SQL-Abfrage- & Editor-Tool, das ich je benutzt habe. Es bietet alles, was ich zum Verwalten meiner Datenbank brauche. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio ist schnell, intuitiv und einfach zu bedienen. Beekeeper unterstützt jede Menge Datenbanken und läuft hervorragend auf Windows, Mac und Linux.
Was Nutzer über Beekeeper Studio sagen
„Beekeeper Studio hat meinen alten SQL-Workflow komplett ersetzt. Es ist schnell, intuitiv und macht die Arbeit mit Datenbanken wieder zum Vergnügen.“
„Ich habe viele Datenbank-GUIs ausprobiert, aber Beekeeper trifft genau die richtige Balance zwischen Funktionsumfang und Einfachheit. Es funktioniert einfach.“