我有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而不是根本不显示该记录。
感谢您的帮助
答案 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(+)