2011-01-06 14 views
0

私は3つのテーブルを持っているし、次のように私はこれらの2つのテーブルを結合しています参加: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 

を私は市のレコードがCITYテーブルにない場合でも、レコードを表示したいです。たとえば。例えばCity_IDレコードがCityテーブルになく、City_idが10の従業員詳細レコードがある場合、レコードをまったく表示しない代わりにCity_nameをnullとして表示する必要があります。

あなたは左を使用する必要が

答えて

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 

(オラクルに固有の)それほど冗長バージョン:

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