Zurück zur Artikelliste Artikel
7 Leseminuten

4 einfache Wege, um endlich zu lernen, welcher JOIN in einer SQL-Abfrage zu verwenden ist

Sie wissen wahrscheinlich schon, dass Sie JOIN verwenden sollten, um Daten aus mehreren Tabellen zu kombinieren. Aber welche Art von JOIN? In diesem Artikel stelle ich Ihnen vier einfache Möglichkeiten vor, wie Sie endlich lernen können, welchen JOIN Sie in verschiedenen Szenarien verwenden sollten.

Bevor wir uns mit den intelligenten Strategien zum Erlernen von SQL-JOINs beschäftigen, schlage ich vor, einen kurzen Überblick über die wichtigsten JOIN-Typen zu geben. Anhand mehrerer Beispiele werden wir uns den Unterschied zwischen (INNER) JOIN, LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN und FULL (OUTER) JOIN vergegenwärtigen.

SQL JOIN-Typen: Ein kurzer Überblick

Für unsere JOIN-Beispiele verwenden wir Daten aus einem Geburtshaus, einer von Hebammen geleiteten Gesundheitseinrichtung für Mütter in den Wehen. Wir haben insbesondere zwei Tabellen:

  1. newbornsHier finden Sie einige grundlegende Informationen über die Babys, die in einem bestimmten Zeitraum geboren wurden.
  2. midwivesHier finden Sie eine Übersicht über die Hebammen, die in unserem Geburtshaus arbeiten, mit Namen und Erfahrung.

Hier sind die Tabellen:

newborns
idmother_namegenderweightheightmidwife_id
11Marta StewartMale3.452.0104
12Cathrine BlackFemale3.048.5101
13Julia GreyFemale2.848.1104
14Penelope GreenMale3.852.5105
15Gabriela GarciaMale2.948.8105
16Nikita MooreMale4.053.0102
17Lucy MillerFemale2.547.3101

midwives
idfirst_nameyears_experience
101Samantha White6
102Kathleen Webster2
103Sarah McCarty1
105Julia Smith4
106Angela Phillips0

Kommen wir direkt zu den Beispielen.

INNER JOIN

Wir beginnen mit dem häufigsten JOIN-Typ, nämlich INNER JOIN (oder einfach JOIN). Dieser Join-Typ wird verwendet, um übereinstimmende Datensätze aus beiden Tabellen anzuzeigen.

Nehmen wir an, wir möchten die Kennung des Neugeborenen, den Namen der Mutter und den Namen der Hebamme, die bei der Geburt geholfen hat, abfragen. Um diese Informationen zu erhalten, können wir die newborns und midwives anhand der ID der Hebamme verknüpfen, die in beiden Tabellen vorhanden ist:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
JOIN midwives m
ON n.midwife_id = m.id;

Um den Tippaufwand zu verringern, verwenden wir Aliasnamen für Tabellennamen: n für newborns und m für midwives. Wir verwenden auch einen Spaltenalias (m.name AS midwife), um einen aussagekräftigen Spaltennamen in der Ausgabe zu erhalten.

Hier ist das Ergebnis:

idmother_namemidwife
12Cathrine BlackSamantha White
16Nikita MooreKathleen Webster
17Lucy MillerSamantha White
14Penelope GreenJulia Smith
15Gabriela GarciaJulia Smith

Wir haben die gewünschten Informationen erhalten. Sie werden jedoch feststellen, dass einige Neugeborene (IDs 11 und 13) in unserer Ergebnistabelle fehlen. Das bedeutet, dass die entsprechenden Datensätze (d. h. die Hebammen-IDs) in der zweiten Tabelle (d. h. midwives) nicht identifiziert wurden.

Wenn Sie alle Datensätze aus der ersten Tabelle behalten wollen, sollten Sie LEFT JOIN verwenden.

LEFT JOIN

LEFT JOIN oder LEFT OUTER JOIN wird verwendet, um alle Datensätze aus der ersten (linken) Tabelle und passende Datensätze aus der zweiten (rechten) Tabelle anzuzeigen. Um alle Neugeborenen in der Ausgabe zu behalten, können wir die gleiche Abfrage wie oben verwenden, indem wir einfach JOIN durch LEFT JOIN ersetzen:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
LEFT JOIN midwives m
ON n.midwife_id = m.id;

Und das Ergebnis:

idmother_namemidwife
12Cathrine BlackSamantha White
14Penelope GreenJulia Smith
11Marta StewartNULL
13Julia GreyNULL
17Lucy MillerSamantha White
16Nikita MooreKathleen Webster
15Gabriela GarciaJulia Smith

Jetzt haben wir alle Datensätze aus der Tabelle newborns Tabelle in der Ausgabe angezeigt. Gleichzeitig gibt es zwei Datensätze mit NULL-Werten in der Spalte Hebamme. Offensichtlich ist die entsprechende Hebamme (ID 104) nicht in den midwives Tabellen aufgeführt. Vielleicht arbeitet sie seit kurzem in einem anderen Geburtshaus.

Großartig! Aber es ist auch interessant zu sehen, ob es in unserem Geburtshaus Hebammen gibt, die bei den letzten Geburten nicht assistiert haben. Lassen Sie uns das mit RIGHT JOIN herausfinden.

RECHTSVERBINDUNG

RIGHT JOIN oder RIGHT OUTER JOIN wird verwendet, um alle Datensätze aus der zweiten (rechten) Tabelle und passende Datensätze aus der ersten (linken) Tabelle anzuzeigen. Wenn wir alle Datensätze aus der Tabelle midwives-Tabelle erhalten möchten, können wir genau dieselbe SQL-Abfrage wie zuvor verwenden, indem wir lediglich LEFT JOIN durch RIGHT JOIN ersetzen:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
RIGHT JOIN midwives m
ON n.midwife_id = m.id;

Beachten Sie, dass RIGHT JOIN nur selten verwendet wird, da es normalerweise durch LEFT JOIN ersetzt werden kann. In unserem Fall könnten wir LEFT JOIN verwenden und die Reihenfolge der Tabellen vertauschen, d.h. wir setzen midwives in die FROM Klausel und newborns in die LEFT JOIN Klausel. Das Ergebnis wäre dasselbe wie unten:

idmother_namemidwife
12Cathrine BlackSamantha White
14Penelope GreenJulia Smith
15Gabriela GarciaJulia Smith
16Nikita MooreKathleen Webster
17Lucy MillerSamantha White
NULLNULLSarah McCarty
NULLNULLAngela Phillips

In der resultierenden Tabelle können Sie sehen, dass es zwei Hebammen ohne übereinstimmende Datensätze in der newborns Tabelle gibt: Sarah McCarty und Angela Phillips. Es sieht so aus, als hätten diese beiden Hebammen die geringste Erfahrung und unterstützen wahrscheinlich die erfahreneren Hebammen, ohne dass ihnen eine größere Rolle zugewiesen wird.

Beachten Sie auch, dass wir wieder nicht alle Neugeborenen in der Ergebnismenge sehen. Was, wenn wir alle Datensätze aus beiden Tabellen behalten wollen? In diesem Fall sollte FULL JOIN verwendet werden.

FULL JOIN

FULL JOIN oder FULL OUTER JOIN wird verwendet, um alle Datensätze aus beiden Tabellen zu erhalten. Wenn wir also alle Neugeborenen und alle Hebammen in der Ergebnismenge behalten wollen, können wir einfach die RIGHT JOIN aus unserem letzten Beispiel durch eine FULL JOIN ersetzen. Beachten Sie auch, dass die Reihenfolge der Tabellen bei FULL JOIN keine Rolle spielt; wir können die Position der Tabellen vertauschen und erhalten das gleiche Ergebnis:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
FULL JOIN midwives m
ON n.midwife_id = m.id;
idmother_namemidwife
11Marta StewartNULL
12Cathrine BlackSamantha White
13Julia GreyNULL
14Penelope GreenJulia Smith
15Gabriela GarciaJulia Smith
16Nikita MooreKathleen Webster
17Lucy MillerSamantha White
NULLNULLSarah McCarty
NULLNULLAngela Phillips

Jetzt haben wir einige NULL Werte in allen Spalten; diese zeigen an, dass einige der Datensätze der linken Tabelle nicht in der zweiten Tabelle übereinstimmen oder dass einige der Datensätze der rechten Tabelle nicht in der ersten Tabelle übereinstimmen.

All diese JOIN-Prinzipien klingen nicht allzu anspruchsvoll, oder? Dennoch ist die Auswahl des richtigen JOINs für Anfänger oft eine Herausforderung. Lassen Sie uns also die besten Strategien zur Beherrschung von SQL-JOINs entdecken.

4 Wege zum Lernen SQL-JOINs

Hier sind vier Schritte, um endlich die verschiedenen Arten von SQL-JOINs zu beherrschen.

  1. Lernen Sie die wichtigsten Unterschiede zwischen den JOIN-Typen. Ihr erster Schritt sollte darin bestehen, sich mit den vier wichtigsten JOIN-Typen und den grundlegenden Regeln für ihre Anwendung vertraut zu machen:
  • JOIN zeigt nur die passenden Datensätze aus beiden Tabellen an.
  • LEFT JOIN zeigt alle Datensätze aus der linken Tabelle und die passenden Datensätze aus der rechten Tabelle an.
  • RIGHT JOIN zeigt alle Datensätze aus der rechten Tabelle und die übereinstimmenden Datensätze aus der linken Tabelle an.
  • FULL JOIN zeigt alle Datensätze aus beiden Tabellen an.
  1. Lesen Sie hochwertige Artikel auf SQL-JOINs. Nachdem Sie die Grundlagen gelernt haben, empfehlen wir Ihnen, die Details und Anwendungsfälle für verschiedene JOIN-Typen durchzugehen. Ich empfehle Ihnen, mit diesen Artikeln zu beginnen, in denen alle wichtigen JOIN-Typen behandelt werden und die detaillierte Erklärungen und Beispiele enthalten:
  1. Verwenden Sie unser SQL JOIN Cheat Sheet. Selbst wenn Sie SQL-JOINs recht gut kennen, ist es oft hilfreich, eine kurze Erinnerung mit der Syntax und den Anwendungsfällen für verschiedene JOIN-Typen zu sehen. Ich empfehle Ihnen, unser tolles SQL JOIN Cheat Sheet auszudrucken oder als Lesezeichen zu speichern. Es ist eine illustrierte Anleitung zu SQL-JOINs, die Sie immer dann nachschlagen können, wenn Sie sich nicht sicher sind, wie Sie JOIN in Ihrer SQL-Abfrage verwenden sollen.
  1. Üben Sie! Wenn Sie SQL-JOINs wirklich beherrschen wollen, müssen Sie viel üben. Lesen Sie über die Herausforderungen, denen Sie beim Üben von SQL-JOINs begegnen können. Um Ihre ersten Erfahrungen mit SQL-JOINs so reibungslos wie möglich zu gestalten, empfehle ich Ihnen, mit dem interaktiven LearnSQL.com SQL-JOINs Kurs zu beginnen. Dieser praxisnahe Kurs enthält 93 Programmieraufgaben, die alle wichtigen Arten von SQL-JOINs abdecken:
  • Wann Sie JOIN, LEFT JOIN, RIGHT JOIN und FULL JOIN verwenden sollten.
  • Wie man drei oder mehr Tabellen in einer Abfrage verbindet.
  • Wie man Daten mit verschiedenen Join-Typen filtert.
  • Wie man eine Tabelle mit sich selbst verknüpft.
  • Was ein Non-Equi Join ist und wann er verwendet werden sollte.

Mehr über diesen Kurs erfahren Sie in diesem Übersichtsartikel.

Vielen Dank fürs Lesen und viel Spaß beim Lernen!