Direkt zum Inhalt

Wie man 3 Tabellen in SQL verbindet: Methoden und Beispiele

Lerne, wie du drei Tabellen in SQL effektiv verbinden kannst. Entdecke praktische Methoden und Beispiele, um deine Fähigkeiten bei der Datenbearbeitung zu verbessern. Beherrsche SQL-Joins mit Leichtigkeit.
Aktualisierte 14. Feb. 2025  · 7 Min. Lesezeit

SQL-Joins werden zwar häufig verwendet, um Daten aus zwei Tabellen zu kombinieren, aber das muss nicht so bleiben. Du kannst sogar Daten aus drei oder mehr Tabellen zusammenführen, um noch komplexere Beziehungen und Erkenntnisse aus deinen Daten zu gewinnen .

In diesem Artikel zeige ich dir Beispiele für die Verknüpfung von drei Tabellen in SQL und gehe dabei auch auf datenbankspezifische Implementierungen und Best Practices ein. Außerdem empfehle ich unsere Kurse Einführung in SQL und SQL lernen für alle wichtigen Grundkenntnisse.

Die Schritte zum Verbinden von 3 Tabellen in SQL

Mit der Verknüpfung von drei Tabellen in SQL kannst du komplexe Abfragen durchführen, um Daten über mehrere Tabellen hinweg abzurufen. Wenn wir drei Tabellen verbinden, verwenden wir die JOIN Klausel, um die Daten aus diesen Tabellen zu kombinieren. 

Angenommen, du hast die folgenden drei Tabellen: Customers, Products, und Orders.

Beispiel einer Tabelle "Kunden" in SQL.

Beispiel einer Tabelle "Kunden" in SQL. Bild vom Autor.

Beispiel einer Tabelle "Produkte" in SQL.

Beispiel einer Tabelle "Produkte" in SQL. Bild vom Autor.

Beispiel für eine Tabelle mit Aufträgen in SQL.

Beispiel für eine Tabelle mit Aufträgen in SQL. Bild vom Autor.

Zunächst kannst du die Tabellen Customers und Orders miteinander verbinden, um zu sehen, welche Kunden Bestellungen aufgegeben haben und welche Details sie bestellt haben, z.B. order_id, order_date und quantity.

-- Select data from Customers
SELECT 
    Customers.customer_id, 
    Customers.first_name, 
    Customers.last_name, 
    Orders.order_id, 
    Orders.order_date, 
    Orders.quantity 
FROM Customers
-- Join Orders table
INNER JOIN Orders 
ON Customers.customer_id = Orders.customer_id;

Beispiel für einen SQL JOIN zwischen den Tabellen "Kunden" und "Aufträge".

Beispiel für einen SQL JOIN zwischen den Tabellen "Kunden" und "Aufträge". Bild vom Autor.

Schließlich kannst du die drei Tabellen Customers, Orders und Products kombinieren, um eine umfassende Übersicht über die Kunden, ihre Bestellungen, die gekauften Produkte und die Gesamtkosten für jede Bestellung zu erhalten.

-- Select data starting with Customers
SELECT 
    Customers.customer_id,
    Customers.first_name,
    Customers.last_name,
    Orders.order_id,
    Orders.order_date,
    Products.product_name,
    Orders.quantity,
    Products.price,
    (Orders.quantity * Products.price) AS total_cost -- Total cost calculation
FROM Customers
-- Join the Orders table based on customer_id
INNER JOIN Orders 
ON Customers.customer_id = Orders.customer_id
-- Join the Products table based on product_id
INNER JOIN Products 
ON Orders.product_id = Products.product_id;

Beispiel für SQL JOIN drei Tabellen.

Beispiel für SQL JOIN drei Tabellen. Bild vom Autor.

Schauen wir uns die praktischen Beispiele für die Verwendung von INNER JOIN, LEFT JOIN und RIGHT JOIN an, um drei Tabellen zu verbinden. In unserem Tutorial Einführung in SQL Joins erfährst du mehr über die verschiedenen Arten und Beispiele von Joins.

Beispiele für das Verbinden von 3 Tabellen in SQL

Sehen wir uns nun einige praktische Beispiele an, indem wir INNER JOIN, LEFT JOIN und RIGHT JOIN verwenden, um drei Tabellen zu verbinden.

Wenn du mit der Bedeutung dieser Joins nicht weiterkommst und weiter üben willst , damit du die richtigen Techniken beherrschst, melde dich zu unserem Kurs Joining Data in SQL an, der dir nicht nur bei SQL-Joins hilft, sondern dir auch die Theorie der relationalen Mengen und Unterabfragen vermittelt.

INNER JOIN verwenden

Eine INNER JOIN ruft Datensätze mit übereinstimmenden Werten in allen drei Tabellen ab und filtert alle Datensätze heraus, die nicht übereinstimmen. INNER JOIN ist ideal, wenn du nur Ergebnisse brauchst, die direkte Beziehungen in allen beteiligten Tabellen haben.

Angenommen, du hast drei Tabellen: Customers, Orders, und Products. Die folgende Abfrage ruft nur die Kunden ab, die Bestellungen aufgegeben haben, und enthält Details zu den Produkten, die mit jeder Bestellung verbunden sind.

-- Select customer details, order information, and associated product names
SELECT 
    Customers.customer_id, 
    Customers.customer_name, 
    Orders.order_id, 
    Products.product_name 
-- Select from Customers table
FROM Customers
    -- Join Orders table
    INNER JOIN Orders 
        ON Customers.customer_id = Orders.customer_id
    -- Join Products table
    INNER JOIN Products 
        ON Orders.product_id = Products.product_id;

LEFT JOIN verwenden

Die LEFT JOIN gibt alle Datensätze aus der ersten (linken) Tabelle und alle übereinstimmenden Datensätze aus den anderen beiden Tabellen zurück. Wenn es keine Übereinstimmung gibt, werden NULL Werte für Spalten aus der richtigen Tabelle zurückgegeben. Die LEFT JOIN ist nützlich, wenn du alle Datensätze aus der Haupttabelle abrufen willst, auch wenn einige Zeilen keine verwandten Daten in den anderen Tabellen haben.

Im folgenden Beispiel werden alle Kunden im Ergebnis angezeigt, auch wenn sie keine Bestellung aufgegeben haben. Die Datenfelder geben NULL Werte zurück, wenn es keine passenden Bestell- oder Produktdaten gibt.

-- Select customer details, order information, and product names
SELECT 
    Customers.customer_id, 
    Customers.customer_name,
    Orders.order_id, 
    Products.product_name
FROM Customers
    -- Join Orders table
    LEFT JOIN Orders 
        ON Customers.customer_id = Orders.customer_id
    -- Join Products table
    LEFT JOIN Products 
        ON Orders.product_id = Products.product_id;

Übrigens: LEFT JOIN ist dasselbe wie LEFT OUTER JOIN in SQL. Wir haben eine Anleitung, in der du Details erfährst: SQL LEFT JOIN vs. LEFT OUTER JOIN.

RIGHT JOIN verwenden

Eine RIGHT JOIN ruft alle Datensätze aus der dritten (ganz rechten) Tabelle und alle übereinstimmenden Datensätze aus den linken Tabellen ab. Obwohl RIGHT JOIN weniger verbreitet ist, ist es immer noch hilfreich, wenn du die Datensätze in der Tabelle ganz rechts priorisieren willst.

Bei einer Bestandsanalyse möchtest du zum Beispiel wissen, für welche Produkte es Bestellungen oder Kundeninteraktionen gibt. Alle Produkte werden in der Abfrage unten aufgelistet, einschließlich aller zugehörigen Bestell- oder Kundendaten. Wenn es Produkte gibt, die noch nicht bestellt wurden, wird in den Feldern order_id und customer_name NULL angezeigt.

-- Select customer details, order information, and product names
SELECT 
    Customers.customer_id,
    Customers.customer_name,
    Orders.order_id,
    Products.product_name
 -- Select from Customers table
FROM Customers
 -- Join Orders table
    RIGHT JOIN Orders 
        ON Customers.customer_id = Orders.customer_id
 -- Join Products table
    RIGHT JOIN Products 
        ON Orders.product_id = Products.product_id;

Die obigen Beispiele zeigen zwar, dass nur ein einziger Join-Typ (INNER JOIN, LEFT JOIN oder RIGHT JOIN) verwendet wird, aber es ist durchaus möglich - und oft auch notwendig -, verschiedene Join-Typen in derselben Abfrage zu kombinieren, um komplexere Datenbeziehungen zu verarbeiten. Du könntest zum Beispiel eine LEFT JOIN verwenden, um alle Datensätze aus einer Tabelle einzuschließen, während du eine INNER JOIN für eine andere Beziehung innerhalb derselben Abfrage verwendest.

In diesem Zusammenhang sollten wir auch erwähnen, dass SQL Joins sequentiell von links nach rechts verarbeitet. Die Reihenfolge bestimmt also, wie Tabellen kombiniert werden und wie NULL Werte behandelt werden. Deshalb habe ich diesen Artikel damit begonnen, den Prozess in zwei Schritten darzustellen. Du solltest deine Abfrage Schritt für Schritt aufbauen und die Ergebnisse schrittweise überprüfen. LEFT JOIN gefolgt von INNER JOIN unterscheidet sich oft von INNER JOIN gefolgt von LEFT JOIN.

Warum wir 3 Tabellen in SQL verbinden müssen

Nehmen wir uns einen Moment Zeit, um über das Datenbankdesign zu sprechen. Der Grund dafür, dass es heute üblich ist, Joins über mehr als zwei Tabellen zu erstellen, ist die Normalisierung der Datenbanken. Datenbanken (und eigentlich auch die Leute, die Datenbanken entwerfen) tun dies, indem sie Informationen in verschiedenen, miteinander verbundenen Tabellen organisieren. Damit soll Redundanz vermieden werden (und auch aus anderen Gründen). Diese Aufteilung der Datenbank bedeutet, dass Daten, die für verschiedene Entitäten relevant sind - wie die Tabellen Customers, Orders und Products, die wir oben betrachtet haben - getrennt gespeichert werden.

Mit anderen Worten: Weil die Daten so oft in einem normalisierten Datenbankschema gespeichert werden, müssen zum Abrufen von Informationen oft Daten aus mehreren Tabellen kombiniert werden. Aus diesem Grund sollten wir wissen, wie man Abfragen schreibt, die viele Joins enthalten, denn so sind die Daten wahrscheinlich strukturiert. Unser Kurs Datenbankdesign ist eine gute Ressource für diese Ideen.

Datenbankspezifische Join-Funktionen

Während SQL-Joins in den meisten relationalen Datenbanken einheitlich sind, gibt es einige Unterschiede bei der Handhabung von Mehrfach-Joins, die drei oder mehr Tabellen umfassen. Sehen wir uns datenbankspezifische Implementierungen und Überlegungen an, um Fallstricke und Optimierungsprobleme zu vermeiden.

MySQL

MySQL funktioniert in der Regel gut bei einfachen Joins, hat aber Probleme bei komplexen Abfragen, die mehrere Tabellen umfassen. Der Befehl EXPLAIN von MySQL ist hilfreich, um die Join-Leistung zu verstehen und Möglichkeiten zur Optimierung von Abfragen durch Indexierung oder Query Rewriting zu finden. MySQL unterstützt auch das Schlüsselwort STRAIGHT_JOIN, das die Join-Reihenfolge erzwingt und so die Abfrageleistung in Fällen verbessern kann, in denen die Standard-Join-Optimierung nicht ideal ist.

PostgreSQL

Der leistungsstarke Optimierer von PostgreSQL sorgt für eine hohe Effizienz bei komplexen Joins, selbst bei großen Datenmengen. Die Unterstützung für rekursive Abfragen mit der WITH RECURSIVE Klausel ermöglicht die Verknüpfung hierarchischer Daten über mehrere Tabellen hinweg. Die Fensterfunktionen von PostgreSQL sind fortschrittlich und können Joins ergänzen, indem sie eine zeilenweise Analyse innerhalb eines verbundenen Datensatzes ermöglichen.

SQL Server

SQL Server erlaubt bestimmte Join-Hinweise (MERGE JOIN, LOOP JOIN und HASH JOIN), um das Standardverhalten außer Kraft zu setzen und die Leistung von Multi-Tabellen-Joins zu verbessern. Die Operatoren CROSS APPLY und OUTER APPLY in SQL Server sind leistungsstarke Werkzeuge zum Verbinden von Tabellen mit tabellenwertigen Funktionen und bieten mehr Flexibilität bei Abfragen mit mehreren Tabellen.

Ich empfehle den Kurs Einführung in SQL Server von DataCamp, um die verschiedenen Funktionen von SQL Server bei der Datenabfrage zu verstehen. Probiere auch unseren Lernpfad zu den SQL Server-Grundlagen aus, um deine Fähigkeiten zum Verbinden von Tabellen und zur Datenanalyse zu verbessern. Der Lernpfad SQL Server Developer vermittelt dir die Fähigkeiten, Abfragen mit SQL Server zu schreiben, Fehler zu beheben und zu optimieren.

Oracle SQL

Oracle unterstützt alle Standard-Joins und bietet einzigartige Optionen wie NATURAL JOIN, die Tabellen automatisch auf der Grundlage übereinstimmender Spaltennamen zusammenführt. Oracles Unterstützung für hierarchische Abfragen mit CONNECT BY kann manchmal den Bedarf an zusätzlichen Joins reduzieren, indem verschachtelte Daten effizienter behandelt werden.

Best Practices beim Verbinden von 3 Tabellen in SQL

Das Verbinden von drei Tabellen in SQL kann die Abfragekomplexität erhöhen und die Leistung beeinträchtigen, insbesondere wenn die Datengröße wächst. Im Folgenden findest du Best Practices und Optimierungstechniken zur Verbesserung der Abfrageleistung.

  • Verwende eine geeignete Indexierung: Indexspalten, die häufig in Join-Bedingungen verwendet werden, beschleunigen den Datenabruf, indem sie die Menge der gescannten Daten reduzieren.

  • Frühes Filtern mit WHERE- und JOIN-Bedingungen: Platziere Filterbedingungen direkt in der JOIN oder WHERE Klausel, um die Daten zu reduzieren, die in nachfolgenden Joins verarbeitet werden müssen, und so die Leistung zu verbessern.

  • Berücksichtige die Join-Reihenfolge und den Join-Typ: Wenn du mehrere Tabellen verbindest, verbinde zuerst die kleineren Tabellen, um den Datenbestand so schnell wie möglich zu verkleinern.  Vermeide die Verwendung von LEFT oder RIGHT Joins, wenn deine Analyse keine nicht übereinstimmenden Datensätze erfordert.

  • Minimiere ausgewählte Spalten mit SELECT: Vermeide die Verwendung von SELECT *, um unnötige Spalten in die Daten aufzunehmen. Wähle explizit die benötigten Spalten aus, um die von jeder Tabelle zurückgegebenen Daten zu reduzieren, den Speicherverbrauch zu minimieren und die Abfrageleistung zu verbessern.

  • Verwende Unterabfragen oder temporäre Tabellen für komplexe Joins: Ziehe in Erwägung, die Abfrage in kleinere Teile aufzuteilen und Unterabfragen für sehr komplexe Joins zu verwenden. Bei Joins, die wiederholte komplexe Abfragen beinhalten, solltest du in Erwägung ziehen, Zwischenergebnisse in temporären Tabellen zu speichern, um Verarbeitungszeit zu sparen, insbesondere bei Abfragen, die umfangreiche Berechnungen erfordern.

Fazit und weiteres Lernen

Mit der Verknüpfung von drei Tabellen in SQL kannst du Daten über mehrere Tabellen hinweg für eine umfassende Datenanalyse und Datenbankverwaltung kombinieren. Die Beherrschung der richtigen Techniken stellt sicher, dass dein Code effizient, skalierbar und leistungsfähig ist.

Wenn du ein kompetenter Datenanalytiker werden willst, schau dir unseren Lernpfad zum Associate Data Analyst in SQL an, um die notwendigen Fähigkeiten zu erlernen. Der Kurs Reporting in SQL ist auch geeignet, wenn du lernen willst, wie man professionelle Dashboards mit SQL erstellt. Schließlich empfehle ich dir, die SQL Associate-Zertifizierung zu erwerben, um zu zeigen, dass du SQL für die Datenanalyse beherrschst und dich in deinem Lebenslauf hervorheben kannst.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Ich verfasse Artikel, die Datenwissenschaft und Analytik vereinfachen und leicht verständlich und zugänglich machen.

FAQs

Welche Arten von Joins können verwendet werden, um drei Tabellen zu verbinden?

Du kannst INNER JOIN, LEFT JOIN, RIGHT JOIN und gelegentlich FULL JOIN verwenden, um drei Tabellen zu kombinieren.

Spielt die Verknüpfungsreihenfolge beim Verbinden von drei Tabellen eine Rolle?

Die Verknüpfungsreihenfolge kann sich auf die Leistung auswirken, insbesondere bei größeren Tabellen. Wenn du mit kleineren oder stark gefilterten Tabellen beginnst, ist das oft effizienter.

Wie kann ich die Leistung optimieren, wenn ich drei Tabellen in SQL verbinde?

Um die Leistung zu optimieren, solltest du für eine ordnungsgemäße Indizierung der in Joins verwendeten Spalten sorgen, die Anzahl der zurückgegebenen Zeilen mit WHERE Klauseln begrenzen und nur die notwendigen Spalten auswählen.

Kann ich mehr als drei Tabellen verbinden?

Du kannst mehr als drei Tabellen in SQL verbinden, aber die Abfrage kann komplexer werden und Leistungsoptimierungen erfordern.

Themen

SQL lernen mit DataCamp

Kurs

Joining Data in SQL

4 hr
201.4K
Level up your SQL knowledge and learn to join tables together, apply relational set theory, and work with subqueries.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Mehr anzeigenMehr anzeigen