DB/Oracle

LEFT OUTER JOIN

Edward. K 2008. 11. 12. 09:34
반응형

-  LEFT OUTER JOIN

   첫번째 쿼리는 두 테이블에 모두 존재하는 경우이고
   두번째 쿼리는 II 테이블을 부모로 하여 검색하는 경우 (부모가 있으면 결과 리턴)

[ 1 ]
  SELECT II.*, I.*
    FROM
      (  SELECT ID
            ,  NAME
             , LEVEL
          FROM USER   ) II,
      (  SELECT ID  
            , ITEM_ID
            , UNIT_ID      
          FROM  USER_ITEM )   I
  WHERE  II.LEVEL = '3'
       AND I.ID = II.ID    -- II 와 I 는 동일 레벨

     >> II 와 I 모두 ID 값이 존재해야 가져온다.
           ->  ITEM 이 없는 유저의 경우, 결과에 나오지 않게 된다.
                즉, 레벨이 3 이면서 아이템을 가지고 있는 유저만을 가져오게 되는 것이다.

      ITEM 이 없는 유저도 결과에 나오게 하려면 다음과 같이 사용해야 한다.
      II 테이블의 내용을 기준으로. II의 레벨이 3인 경우의 유저 정보를 가져온다.

    
[ 2 ]  
   SELECT II.ID, II.NAME, II.LEVEL
                , I.ID , I.ITEM_ID, I.UNIT_ID      
   FROM USER II
      LEFT OUTER JOIN USER_ITEM I
               ON II.id=I.id     -- II 테이블에 종속
  WHERE II.LEVEL  = '3'  
    

반응형