Oracle加入问题

时间:2011-01-06 03:46:36

标签: oracle11g

我有3个表,我正在加入这两个表,如下所示:

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

即使City记录不在CITY表中,我也希望显示记录。例如。如果说10的City_ID记录不在City表中但是有一个具有City_id 10的员工详细记录,则它应该将City_name显示为null而不是根本不显示该记录。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您需要使用左连接:

 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

一个不太详细的版本(特定于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(+)