Проблема с подключением к Oracle

У меня есть 3 таблицы, и я присоединяюсь к этим 2 таблицам следующим образом:

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. Например. если запись City_ID, скажем, 10 отсутствует в таблице City, но есть запись сведений о сотруднике с City_id 10, она должна отображать City_name как null вместо того, чтобы вообще не отображать запись.

Ценю вашу помощь


person acadia    schedule 06.01.2011    source источник


Ответы (1)


Вам нужно использовать левое соединение:

 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(+)              
person Chandu    schedule 06.01.2011