Es gibt mehrere Join-Typen (Join) in SQL, mit denen Sie Daten aus verschiedenen Tabellen zu einem einzigen Ergebnis zusammenführen können. Ein solcher Typ ist outer join. Abhängig vom gewählten externen Verbindungstyp können Sie verschiedene Datenkombinationen erhalten.
Left outer join und right outer join sind zwei verschiedene Varianten einer externen Verbindung. Der Hauptunterschied zwischen ihnen liegt in der Reihenfolge der verknüpften Tabellen.
Bei Verwendung eines left outer join ist die linke (erste) Tabelle die Haupttabelle, während die rechte (zweite) Tabelle die Abfrageergebnisse ergänzt. Dies bedeutet, dass alle Zeilen aus der linken Tabelle angezeigt werden, auch wenn Sie keine entsprechenden Zeilen in der rechten Tabelle finden. Wenn in der rechten Tabelle keine entsprechende Zeile vorhanden ist, wird NULL anstelle von Werten angezeigt.
Auf der anderen Seite ist die rechte (erste) Tabelle bei Verwendung von right outer join die Haupttabelle, während die linke (zweite) Tabelle die Abfrageergebnisse ergänzt. Dies bedeutet, dass alle Zeilen aus der rechten Tabelle angezeigt werden, auch wenn sie keine entsprechenden Zeilen in der linken Tabelle finden. Wenn in der linken Tabelle keine entsprechende Zeile vorhanden ist, wird anstelle der Werte NULL angezeigt.
Was ist ein left outer join?
Die linke Tabelle ist die Haupttabelle und alle ihre Zeilen werden als Ergebnis beibehalten. Wenn in der rechten Tabelle eine Übereinstimmung für die Zeile der linken Tabelle vorhanden ist, wird die entsprechende Zeile aus der rechten Tabelle dem Ergebnis hinzugefügt. Andernfalls wird anstelle von Zeilen aus der rechten Tabelle das Ergebnis zurückgegeben NULL.
Ein Left outer join wird verwendet, um Daten aus zwei Tabellen zu kombinieren, wenn alle Zeilen aus der linken Tabelle beibehalten werden müssen, auch wenn in der rechten Tabelle kein entsprechender Wert vorhanden ist. Dies ist nützlich, wenn Sie nach Informationen suchen, z. B. wenn Sie alle Kunden und ihre Bestellungen finden müssen, einschließlich Kunden ohne Bestellungen.
Beispiel für einen SQL-Befehl zum Ausführen eines left outer join:
SELECT * FROM left_table LEFT OUTER JOIN right_table ON left_table.id = right_table.id;
Lange zusammenfassende Beschreibung left outer join
Die Operation left outer join (oder einfach left join) ist eine Art von Tabellenverbindungen, die in SQL verwendet wird, um zwei Tabellen unter einer bestimmten Bedingung zu verbinden. Im Gegensatz zu einem inneren Join speichert der left outer join alle Zeilen aus der linken Tabelle und fügt die entsprechenden Zeilen aus der rechten Tabelle hinzu.
Das Ergebnis eines left outer Joins, der eine Verbindung von Tabelle A mit Tabelle B enthält, listet alle Zeilen aus Tabelle A sowie die Zeilen aus Tabelle B auf, die die Join-Bedingung erfüllen. Wenn in Tabelle B keine Zeilen vorhanden sind, die der Bedingung entsprechen, werden die Werte auf NULL gesetzt.
Die Syntax für die Operation left outer join lautet wie folgt:
SELECT A.column1, B.column2FROM table_A ALEFT OUTER JOIN table_B B ON A.key = B.key
In diesem Beispiel wird Tabelle A gemäß der durch die key-Schlüssel angegebenen Bedingung mit Tabelle B verknüpft. Das Ergebnis der Abfrage sind alle Zeilen aus Tabelle A sowie Zeilen aus Tabelle B, bei denen die Schlüsselwerte übereinstimmen.
Ein left outer join ist nützlich in Situationen, in denen Sie alle Zeilen aus einer Tabelle und die entsprechenden Zeilen aus einer anderen Tabelle abrufen müssen. Auf diese Weise können Sie Daten aus verschiedenen Quellen zusammenführen und umfassendere Berichte oder Analysen erstellen.
Beachten Sie jedoch, dass die Verwendung eines left outer join zu mehr Zeilen in der resultierenden Tabelle führen kann. Daher müssen Sie die Daten nach dem Join sorgfältig analysieren und überprüfen.
Beispiel für die Verwendung von left outer join
Betrachten wir ein Beispiel für die Verwendung von left outer join auf zwei Tabellen: "Customers" (Kunden) und "Orders" (Bestellungen).
Die Tabelle "Customers" hat die folgenden Spalten:
- customer_id - kunden-ID
- customer_name - name des Kunden
Die Tabelle "Bestellungen" hat die folgenden Spalten:
- order_id - bestellnummer
- customer_id - kunden-ID, die die Tabellen "Customers" und "Orders" verknüpft
- order_date - Bestelldatum
Sie können die folgende SQL-Abfrage mit left outer join verwenden, um eine Liste aller Kunden und deren Bestellungen abzurufen:
SELECT Customers.customer_name, Orders.order_id, Orders.order_dateFROM CustomersLEFT OUTER JOIN OrdersON Customers.customer_id = Orders.customer_id;
Das Ergebnis dieser Abfrage ist eine Tabelle, die die folgenden Spalten enthält:
- customer_name - name des Kunden
- order_id - bestellnummer
- order_date - Bestelldatum
Wenn der Kunde Bestellungen hat, werden deren IDs und Daten als Ergebnis angegeben. Wenn der Kunde keine Aufträge hat, werden NULL-Werte in den entsprechenden Spalten angezeigt.
Die Verwendung von left outer join ermöglicht daher, eine vollständige Liste der Kunden zusammen mit ihren Bestellungen zu erhalten, einschließlich der Kunden ohne Bestellungen.
Behandeln von NULL-Werten bei einem left outer join
Einer der Hauptpunkte, die einen left outer join von einem right outer join unterscheiden, besteht darin, NULL-Werte zu behandeln. Wenn Sie einen left outer join verwenden, werden alle Zeilen aus der linken Tabelle, die in der rechten Tabelle keine Übereinstimmungen gefunden haben, weiterhin abgeleitet, aber die Spaltenwerte aus der rechten Tabelle in diesen Zeilen sind NULL.
Für ein besseres Verständnis betrachten wir ein Beispiel. Lassen Sie uns die Tabelle "Studenten" mit den Spalten "ID" und "Name" und die Tabelle "Noten" mit den Spalten "Student-ID" und "Bewertung" haben. Wir möchten alle Schüler und ihre Noten auflisten und dabei berücksichtigen, dass nicht alle Schüler Noten haben.
Mit einem left outer join können wir diese Tabellen wie folgt zusammenführen:
SELECT Студенты.Имя, Оценки.ОценкаFROM СтудентыLEFT OUTER JOIN Оценки ON Студенты.ID = Оценки.ID_студента
Das Ergebnis enthält alle Zeilen aus der Tabelle "Schüler", auch wenn in der Tabelle "Noten" keine entsprechenden Datensätze vorhanden sind. In diesem Fall ist der Wert der Spalte "Auswertung" NULL.
Um die Ergebnisse einfacher zu visualisieren, können wir die folgende Abfrage verwenden:
SELECT Студенты.Имя, COALESCE(Оценки.Оценка, 'Нет оценки') AS ОценкаFROM СтудентыLEFT OUTER JOIN Оценки ON Студенты.ID = Оценки.ID_студента
Wenn der Student in diesem Fall keine Bewertung hat, geben wir anstelle von NULL den Text "Keine Bewertung" aus. Auf diese Weise können wir die Informationen besser darstellen und verstehen, welche Schüler keine Noten haben.
Was ist ein right outer join?
Wenn Sie right outer join verwenden, wird die nach dem Schlüsselwort RIGHT JOIN angegebene Tabelle als rechte Tabelle bezeichnet, und die Tabelle vor dem Schlüsselwort LEFT JOIN wird als linke Tabelle bezeichnet. Das Join-Ergebnis enthält alle Zeilen aus der rechten Tabelle und nur die entsprechenden Zeilen aus der linken Tabelle. Wenn in der linken Tabelle keine übereinstimmenden Werte vorhanden sind, werden die entsprechenden Felder mit NULL-Werten gefüllt.
Der Right outer join ist nützlich in Situationen, in denen alle Zeilen aus der rechten Tabelle abgerufen werden müssen, einschließlich derjenigen, die in der linken Tabelle keine Übereinstimmung aufweisen. Auf diese Weise können Sie Daten aus beiden Tabellen analysieren und vergleichen und die Beziehungen zwischen ihnen anzeigen.
Lange zusammenfassende Beschreibung right outer join
Der rechte äußere Join wird verwendet, wenn es wichtig ist, alle Werte aus der rechten Tabelle zu speichern, unabhängig davon, ob sie in der linken Tabelle vorhanden sind. Das Ergebnis von right join ist also eine neue Tabelle, die in jeder Zeile Werte aus beiden Tabellen enthält.
Wenn Sie eine SQL-Abfrage für den right outer join schreiben, wird das Schlüsselwort verwendet RIGHT JOIN gefolgt von einem Verweis auf Tabellen und einer Bedingung zum Zusammenführen von Tabellen.
Beispiel für die Verwendung von right outer join
Nehmen wir an, wir müssen eine Liste aller Kunden erhalten, einschließlich derjenigen, die keine Bestellungen haben. In diesem Fall müssen wir den right outer join verwenden.
Eine SQL-Abfrage mit einem right outer join könnte folgendermaßen aussehen:
SELECT *FROM clientsRIGHT OUTER JOIN orders ON clients.client_id = orders.client_id;
Das Ergebnis dieser Abfrage ist eine Tabelle, die alle Kunden aus der Tabelle "Kunden" sowie die entsprechenden Bestellungen aus der Tabelle "Bestellungen" enthält. Wenn der Kunde keine Aufträge hat, enthält die Tabelle NULL-Werte für die entsprechenden Felder in der Tabelle Bestellungen.
Eine solche Anfrage kann uns dabei helfen, Kundendaten und Bestelldaten zu analysieren, einschließlich Kunden ohne Bestellungen. Zum Beispiel können wir damit bestimmen, wie viele Kunden keine Bestellung getätigt haben, oder nach Kunden suchen, die eine bestimmte Anzahl von Bestellungen getätigt haben.