Oracle OUTER JOIN (RIGHT JOIN, LEFT JOIN) 비교 아우터조인
[LEFT JOIN사용법]
SELECT *
FROM 테이블1 T1
LEFT JOIN 테이블2 T2 ON (T2.테이블을 연결할 컬럼 = T1.테이블을 연결할 컬럼 );
[예제]
사원정보가 있는 AMT_MST_TEST 와 부서정보가 있는 DEPT_MST_TEST 테이블이 있습니다.
<AMT_MST_TEST>
<DEPT_MST_TEST>
AMT_MST_TEST 테이블에 DEPT_CD가 같은 조건으로 DEPT_MST_TEST와 LEFT, RIGHT JOIN을 걸어보겠습니다.
SELECT *
FROM AMT_MST_TEST T1
LEFT JOIN DEPT_MST_TEST T2 ON (T2.DEPT_CD = T1.DEPT_CD)
AMT_MST_TEST(사원) 테이블을 기준으로 DEPT_MST_TEST(부서) 테이블에 DEPT_CD값으로 LEFT JOIN을 걸었습니다.
좌측 테이블을 기준으로 조건에 해당하는 DEPT_CD 값이 같으면 DEPT_MST_TEST 테이블의 값이 붙게되고, 없다면 NULL로 가져오게 됩니다.
이번엔 RIGHT JOIN 입니다.
SELECT *
FROM AMT_MST_TEST T1
RIGHT JOIN DEPT_MST_TEST T2 ON (T2.DEPT_CD = T1.DEPT_CD)
RIGHT JOIN을 걸게되면 조건이 같은 데이터의 행만 가져오게 됩니다.
질의에 대한 출력행의 수가 다르게 나온 것을 볼 수 있죠?
LEFT JOIN의 경우 연결된 DEPT_CD 가 같은 것이 있으면 붙이고 없으면 마는 것이죠.
하지만, RIGHT JOIN의 경우에는 연결된 DEPT_CD가 같은 것이 없다면 아예 가져오지 않게됩니다.
결론적으로, 좌측 테이블의 행을 기준으로 가져오고 조인 조건에 해당하는 우측 테이블의 데이터를 붙여서 가져오고 싶다면 LEFT JOIN을
조인 조건에 일치하는 행만을 출력하고 싶다면 RIGHT JOIN을 사용합니다.
'Database > SQL' 카테고리의 다른 글
Oracle 오라클 CASE문 사용법 CASE WHEN THEN END (0) | 2013.05.24 |
---|---|
Subquery 서브쿼리사용법, ALL, ANY, IN, EXISTS (3) | 2013.05.23 |
오라클 그룹함수 SUM, AVG, MAX, MIN, COUNT의 사용 GROUP BY HAVING (0) | 2013.05.21 |
오라클 DELETE문 데이터 삭제 (0) | 2013.05.21 |
오라클 UPDATE문 데이터 수정 (0) | 2013.05.21 |
댓글