Oracle присоединяется к вопросу - PullRequest
0 голосов
/ 06 января 2011

У меня есть 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 как ноль, а не отображать запись вообще.

Благодарим Вас за помощь

1 Ответ

2 голосов
/ 06 января 2011

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

 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(+)              
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...