left outer join 시 조건을 잘못쓰면 원하는 결과를 가져오지않는다.
심지어 카운트도 잘못세어온다.
left outer join 시 조건절 쓰는방법을 익혀두도록 하자.
심지어 카운트도 잘못세어온다.
left outer join 시 조건절 쓰는방법을 익혀두도록 하자.
** 규칙 **
LEFT OUTER JOIN 시
ON 절에서는 우측(널값으로 채워지는 쪽)의 추가 제약조건을 넣고
LEFT OUTER JOIN 시
ON 절에서는 우측(널값으로 채워지는 쪽)의 추가 제약조건을 넣고
WHERE 절에서는 좌측의 추가 제약조건을 넣어야 한다.
1. 원하는 결과값
SELECT * --(184개 행 적용됨)
FROM TBHZM200 AS A LEFT OUTER JOIN MST_TKT_STA_STOCK AS B
ON a.Extn_Sta_No = b.Extn_Sta_No
AND B.Oper_DT = '20090713' <-- 우측의 추가 제약조건
WHERE A.Transp_Oper_Org_CD = '1' <-- 좌측의 추가제약조건
2. 잘못된 예 -- INNER JOIN의 결과가 나오게 됨.
SELECT * --(176개 행 적용됨)
FROM TBHZM200 AS A LEFT OUTER JOIN MST_TKT_STA_STOCK AS B
ON a.Extn_Sta_No = b.Extn_Sta_No
AND A.Transp_Oper_Org_CD = '1'
WHERE b.Oper_DT = '20090713'
3. 잘못된 예
SELECT * --(503개 행 적용됨)
FROM TBHZM200 AS A LEFT OUTER JOIN MST_TKT_STA_STOCK AS B
ON a.Extn_Sta_No = b.Extn_Sta_No
AND B.Oper_DT = '20090713' <--둘다 ON 절에 위치함.
AND A.Transp_Oper_Org_CD = '1'
4. 잘못된 예
SELECT * --(176개 행 적용됨)
FROM TBHZM200 AS A LEFT OUTER JOIN MST_TKT_STA_STOCK AS B
ON a.Extn_Sta_No = b.Extn_Sta_No
WHERE B.Oper_DT = '20090713' <--둘다 where절에 위치
AND A.Transp_Oper_Org_CD = '1'
'Note > 그밖에' 카테고리의 다른 글
java, jsp 난수발생 (0) | 2011.07.05 |
---|---|
jsp request 내장객체 사용 (0) | 2011.07.05 |
윈도우 사용자계정 없이 부팅하기 (0) | 2011.07.05 |
DISTINCT 와 GROUP BY의 차이 (0) | 2011.07.04 |
php 소숫점 처리 (0) | 2011.06.30 |