Ich verwende Oracle 11gR2
und ich versuche, eine Abfrage zu schreiben, die Adressdaten aus zwei Tabellen zurückgibt, CUSTOMERS
und LOCATIONS
. Ein bestimmter Kunde kann verschiedene Standorte haben (oder auch nicht), jeder mit einer eigenen Adresse.
Ich möchte die Adresse für jeden Kunden und alle seine Standorte zurückgeben. Zum Beispiel, wenn die Tabellen Daten enthalten wie:
%Vor%
Dann möchte ich, dass die Ergebnisse wie folgt aussehen:
%Vor%
Mein erster Gedanke war ungefähr so:
%Vor% Das Problem dabei ist, dass wenn ein Kunde über Standorte verfügt, er keine Zeile mit Nullwerten für Standortdaten zurückgibt, sodass ich keine Zeile mit der Adresse in der Tabelle CUSTOMERS
erhalte. Es gibt mir so etwas:
%Vor%
Es fehlt die New York
-Adresse für customer 1
. Ich habe das versucht ...
Aber es gab mir die gleichen Ergebnisse wie die erste Abfrage. Gibt es eine Möglichkeit, einen Null-Datensatz für die zweite Tabelle zurückzugeben, selbst wenn die Join-Bedingung übereinstimmt?
Wenn Sie die beiden Tabellen verbinden möchten, selbst wenn eine Nichtübereinstimmung besteht, müssen Sie IS NULL
für Ihre verbundenen Spalten verwenden.
Zum Beispiel.
%Vor%.
%Vor%.
%Vor% Dies bringt Ergebnisse mit NULL
Sie können einen vollständigen äußeren Join versuchen. Zum Beispiel:
%Vor%