SQL Outer Join

Sql Outer Join



Es versteht sich von selbst, dass Verknüpfungen eines der erkennbarsten Merkmale relationaler Datenbanken sind. Mithilfe von Joins können wir die Daten aus einer oder mehreren Tabellen basierend auf einer zugehörigen Bedingung kombinieren, um eine kohärente Datenoperation zu erstellen.

Es gibt verschiedene Arten von Joins in SQL, jede mit einer einzigartigen Art und Weise, wie sie die Daten aus den teilnehmenden Tabellen oder der Ergebnismenge verarbeitet. Einer der häufigsten Join-Typen in SQL ist ein OUTER JOIN.







Ein OUTER JOIN in SQL ruft alle übereinstimmenden Zeilen aus den beteiligten Tabellen sowie die nicht übereinstimmenden Zeilen aus einer oder beiden Tabellen ab. Dies ist praktisch, wenn Sie mit Tabellen arbeiten, die NULL-Werte oder fehlende Mengen enthalten.



Lassen Sie uns genauer untersuchen, was diese Verknüpfungen bewirken, wie sie funktionieren und wie wir sie in einer SQL-Datenbank verwenden können.



Anforderungen:

Für dieses Tutorial arbeiten wir mit MySQL 8.0 und verwenden die Sakila-Beispieldatenbank. Sie können jedoch auch jeden anderen Datensatz verwenden, den Sie für geeignet halten.





Arten von Outer Joins

Es gibt drei Haupttypen von OUTER JOINS in SQL. Zu diesen Arten von OUTER JOINS gehören:

  1. Linke OUTER JOINS

  2. Bei LEFT OUTER JOINS ruft der Join alle Zeilen aus der linken Tabelle und nur die passenden Zeilen aus der rechten Tabelle ab. Wenn in der rechten Tabelle keine übereinstimmenden Zeilen vorhanden sind, gibt der Join die NULL-Werte für die Spalten in der rechten Tabelle zurück.



  3. Rechte ÄUSSERE JOINS

  4. Dies ähnelt einem RIGHT OUTER JOIN. Es ruft jedoch alle Zeilen aus der rechten Tabelle ab, aber nur die passenden Zeilen aus der linken Tabelle. Wenn in der linken Tabelle keine übereinstimmenden Zeilen vorhanden sind, enthält der Join die NULL-Werte für die Spalten in der linken Tabelle.

  5. VOLLSTÄNDIGE ÄUSSERE VERBINDUNGEN

  6. Schließlich haben wir die FULL OUTER JOINS. Diese Art der Verknüpfung kombiniert die äußere Verknüpfung RIGHT und LEFT. Infolgedessen ruft der Join alle Zeilen ab, wenn entweder in der linken oder rechten Tabelle eine Übereinstimmung vorliegt. Wenn es keine Übereinstimmung gibt, gibt der Join die NULL-Werte für die Spalten aus der Tabelle ohne Übereinstimmung zurück.

Syntax des SQL OUTER JOIN

Im Folgenden wird die Syntax eines SQL OUTER JOIN ausgedrückt. Beachten Sie jedoch, dass die Syntax je nach Zieldatenbank-Engine leicht variieren kann.

Das Folgende ist eine allgemeine Struktur:

Spalten auswählen
AUS Tabelle1
[LINKS | RICHTIG | FULL] OUTER JOIN Tabelle2
ON table1.column_name = table2.column_name;

Die Syntax eines OUTER JOIN in SQL ist ziemlich selbsterklärend.

Beispiele:

Schauen wir uns einige Anwendungsbeispiele an, wie wir die verschiedenen Arten von OUTER JOINS in SQL anwenden können.

Wie bereits erwähnt, werden wir zur Demonstration die Sakila-Beispieldatenbank verwenden. In diesem Fall verwenden wir die Tabellen „Kunde“ und „Zahlung“.

Beispiel 1: LEFT OUTER JOIN

Beginnen wir mit einem OUTER JOIN. Angenommen, wir möchten alle Kundeninformationen zusammen mit ihren Zahlungsinformationen (sofern verfügbar) abrufen.

Dies macht einen LEFT OUTER JOIN anwendbar, da wir alle Kundeninformationen (links) und Zahlungsinformationen, falls verfügbar (rechts), benötigen.

Wenn der Kunde keine Zahlung geleistet hat, zeigt der Join die NULL-Werte für die zahlungsbezogenen Spalten an.

Ein Beispiel ist wie folgt:

WÄHLEN
c.customer_id,
c.vorname,
c.nachname,
p.Betrag,
p.Zahlungsdatum
AUS
Kunde c
LEFT OUTER JOIN Zahlung p
AN
c.customer_id = p.customer_id;

In die gegebene Abfrage beziehen wir die Spalten „customer_id“, „first_name“ und „last_name“ aus der Tabelle „customer“ ein. Wir beziehen auch den Betrag und das „Zahlungsdatum“ aus der Tabelle „Zahlung“ ein.

Anschließend führen wir einen LEFT OUTER JOIN zwischen den Tabellen „customer“ und „zahlung“ basierend auf der „customer_id“ durch.

Dabei handelt es sich um alle Kunden (unabhängig davon, ob die Zahlung erfolgt ist oder nicht) sowie deren Zahlungsdaten (falls vorhanden).

Eine Beispielausgabe sieht wie folgt aus:

Beispiel 2: RIGHT OUTER JOIN

Kommen wir nun zum RIGHT OUTER JOIN. Angenommen, wir möchten in diesem Fall alle Zahlungsinformationen und gegebenenfalls den zugehörigen Kunden angeben.

Wenn in diesem Fall eine Zahlung durch einen Kunden erfolgt, werden bei der Verknüpfung die Daten dieses Kunden angezeigt. Wenn es eine Zahlung ohne zugeordneten Kunden gibt, werden die NULL-Werte für kundenbezogene Spalten angezeigt.

WÄHLEN
c.customer_id,
c.vorname,
c.nachname,
p.Betrag,
p.Zahlungsdatum
AUS
Kunde c
RIGHT OUTER JOIN-Zahlung p
AN
c.customer_id = p.customer_id;

Die resultierende Menge ist wie folgt:

Beispiel 3: FULL OUTER JOIN

Ein FULL OUTER JOIN hingegen ruft alle Kundeninformationen und Zahlungen ab. Dies umfasst alle Kunden und alle Zahlungen und zeigt die NULL-Werte an, bei denen keine Übereinstimmung zwischen den Tabellen besteht.

WÄHLEN
c.customer_id,
c.vorname,
c.nachname,
p.Betrag,
p.Zahlungsdatum
AUS
Kunde c
FULL OUTER JOIN-Zahlung p
AN
c.customer_id = p.customer_id;

Beachten Sie, dass MySQL einen FULL OUTER JOIN nicht nativ unterstützt. Sie müssen etwas Jiujitsu-Magie mit LEFT JOIN, UNION und RIGHT JOIN anwenden. Ziemlich nervig, könnten wir hinzufügen.

Abschluss

In diesem Tutorial haben wir alles über OUTER JOINS gelernt. Wir haben gelernt, was ein OUTER JOIN in SQL ist, welche Arten von OUTER JOINS es gibt und welche Beispiele es für die Verwendung dieser Arten von OUTER JOINS gibt.