Oracle join issue
I have 3 tables and I am joining these 2 tables as follows:
SELECT EMP.FNAME,EMP.LNAME,EMP.AGE,EMPD.TQ,EMPD.TA,CTY.CITY_NAME FROM
EMPLOYEE EMP,EMPLOYEE_DETAIL EMPD, CITY CTY
WHERE EMP.EMP_ID=EMPD.EMP_ID开发者_高级运维 AND EMPD_CITY_ID=CTY.CITY_ID
I want to display records even if City record is not in CITY table. For eg. if City_ID record for say 10 is not in City table but there is an employee detail record with City_id 10 it should display City_name as null instead of not displaying the record at all.
Appreciate your help
You need to use a left join:
SELECT EMP.FNAME,
EMP.LNAME,
EMP.AGE,
EMPD.TQ,
EMPD.TA,
CTY.CITY_NAME
FROM EMPLOYEE EMP INNER JOIN EMPLOYEE_DETAIL EMPD
ON EMP.EMP_ID=EMPD.EMP_ID LEFT JOIN CITY CTY
ON EMPD_CITY_ID=CTY.CITY_ID
A less verbose version (specific to Oracle):
SELECT EMP.FNAME,
EMP.LNAME,
EMP.AGE,
EMPD.TQ,
EMPD.TA,
CTY.CITY_NAME
FROM EMPLOYEE EMP,
EMPLOYEE_DETAIL EMPD,
CITY CTY
WHERE EMP.EMP_ID=EMPD.EMP_ID
AND EMPD_CITY_ID=CTY.CITY_ID(+)
精彩评论