开发者

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(+)              
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜