Ich verwende Oracle 11gR2
und ich versuche, eine Abfrage zu schreiben, die Adressdaten aus zwei Tabellen, CUSTOMERS
und LOCATIONS
zurückgibt. Ein bestimmter Kunde kann (oder muss nicht) verschiedene Standorte haben, jeder mit seiner eigenen Adresse.Links Join, der immer null Datensätze enthält
Ich möchte die Adresse für jeden Kunden und alle ihre Standorte zurückgeben. Zum Beispiel enthalten, wenn die Tabellen Daten wie:
CUSTOMERS CUSTOMER_ID ADDRESS 1 "New York" 2 "California"LOCATIONS CUSTOMER_ID LOCATION_ID ADDRESS 1 1 "New Jersey"
Dann möchte ich die Ergebnisse wie folgt aussehen:
CUSTOMER_ID LOCATION_ID ADDRESS 1 "New York" 1 1 "New Jersey" 2 "California"
Mein erster Gedanke so etwas wie das war:
SELECT
CUSTOMERS.CUSTOMER_ID,
LOCATIONS.LOCATION_ID,
NVL(LOCATIONS.ADDRESS,CUSTOMERS.ADDRESS) ADDRESS
FROM
CUSTOMERS
LEFT JOIN
LOCATIONS ON (CUSTOMERS.CUSTOMER_ID=LOCATIONS.CUSTOMER_ID)
Das Problem dabei ist, dass, wenn ein Kunde Standorte hat, es keine Zeile mit Nullwerten fo zurückgibt r Standortdaten, so bekomme ich keine Zeile mit der Adresse in der CUSTOMERS
Tabelle. Es gibt mir so etwas wie dieses:
CUSTOMER_ID LOCATION_ID ADDRESS 1 1 "New Jersey" 2 "California"
Es ist die New York
Adresse für customer 1
fehlt. Ich habe versucht, diese ...
SELECT
CUSTOMERS.CUSTOMER_ID,
LOCATIONS.LOCATION_ID,
NVL(LOCATIONS.ADDRESS,CUSTOMERS.ADDRESS) ADDRESS
FROM
CUSTOMERS
LEFT JOIN
LOCATIONS ON (CUSTOMERS.CUSTOMER_ID=LOCATIONS.CUSTOMER_ID OR LOCATIONS.CUSTOMER_ID IS NULL)
Aber es gab mir die gleichen Ergebnisse wie die erste Abfrage. Gibt es eine Möglichkeit, einen Nulldatensatz für die zweite Tabelle zurückzugeben, selbst wenn die Join-Bedingung übereinstimmt?
versuchen – yurib