Estoy usando Oracle 11gR2
y estoy tratando de escribir una consulta que devuelve datos de direcciones de dos tablas, CUSTOMERS
y LOCATIONS
. Un cliente determinado puede (o no) tener diferentes ubicaciones, cada una con su propia dirección.Izquierda Unirse que siempre incluye registros nulos
Me gustaría devolver la dirección de cada cliente y todas sus ubicaciones. Por ejemplo, si los cuadros que figuran datos como:
CUSTOMERS CUSTOMER_ID ADDRESS 1 "New York" 2 "California"LOCATIONS CUSTOMER_ID LOCATION_ID ADDRESS 1 1 "New Jersey"
entonces yo quiero que los resultados se ven como:
CUSTOMER_ID LOCATION_ID ADDRESS 1 "New York" 1 1 "New Jersey" 2 "California"
Mi primer pensamiento fue algo como esto:
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)
El problema es que cuando un cliente tiene ubicaciones, no devuelve una fila con valores nulos para r datos de ubicación, por lo que no obtengo una fila con la dirección en la tabla CUSTOMERS
. Me da algo como esto:
CUSTOMER_ID LOCATION_ID ADDRESS 1 1 "New Jersey" 2 "California"
que le falta la dirección New York
para customer 1
. Intenté esto ...
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)
Pero me dio los mismos resultados que la primera consulta. ¿Hay alguna manera de devolver un registro nulo para la segunda tabla incluso cuando hay una coincidencia en la condición de unión?
probar una combinación externa completa tanto en ID del cliente y la dirección – yurib