LEFT OUTER JOIN
- 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'