규칙
LEFT OUTER JOIN 시 ON 절에서는 우측(널값으로 채워지는 쪽)의 추가 제약조건을 넣고
좌측의 추가 제약조건은 WHERE절에 넣어야 한다.
1. 원하는 결과값
1 2 3 4 5 | 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' -- 좌측의 추가제약조건 | cs |
2. 잘못된 예 -- INNER JOIN의 결과가 나오게 됨.
1 2 3 4 5 | 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' | cs |
3. 잘못된 예
1 2 3 4 5 | 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' | cs |
4. 잘못된 예
1 2 3 4 5 | 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' | cs |
결과
1 2 3 4 | 갯수 503 SELECT count(*) FROM TBHZM200 AS A 갯수 184 SELECT count(*) FROM TBHZM200 AS A WHERE A.Transp_Oper_Org_CD = '1' 갯수 13838 SELECT count(*) FROM MST_TKT_STA_STOCK AS B 갯수 178 SELECT count(*) FROM MST_TKT_STA_STOCK AS B WHERE B.Oper_DT = '20090713' | cs |
출처 : http://ultteky.egloos.com/10411192
'SQL > MS-SQL' 카테고리의 다른 글
SELF JOIN (0) | 2017.09.19 |
---|---|
join Diagram (0) | 2017.09.19 |
NULL 비교하기 (0) | 2017.09.19 |
일반집계함수 WINDOW FUNCTION (0) | 2017.09.07 |
순위관련 WINDOW FUNCTION (0) | 2017.09.07 |