우리가 기존 알고있던 OUTER JOIN의 기본 개념은 table을 column을 통해 연결하고, 연결한 후 SELECT를 통해 data를 추출해내는 것이었다.
예를 들어 아래 쿼리와 같이
SELECT *
FROM TABLE_A A, TABLE_B B
WHERE 1=1
AND A.COLUMN1 = B.COLUMN1 (+)
AND A.COLUMN2 = B.COLUMN2 (+)
COLUMN끼리 이어주는 것으로 OUTER JOIN을 대부분 사용해왔다.
기준 테이블과 결합 테이블을 이어줄때, 결합 테이블 자체적으로 결합하는 데이터의 범위를 제한할 수 있다.
예를 들어 TABLE A와 B의 OPTION을 연결한 후, A에서 CAR_SERIES를 추출하고자 한다. 이때 추출대상인 CAR_SERIES를 B의 OPTION_SERIES를 'A_CAR_SERIES' 조인조건으로 그 범위를 제한하고자 할때 다음과 같이 데이터 범위를 제한할 수 있다.
SELECT A.CAR_SERIES
FROM TABLE_A A, TABLE_B B
WHERE 1=1
AND B.OPTION_SERIES(+) = 'A_CAR_SERIES'
AND A.OPTION = B.OPTION(+)
이경우 A와 B가 join하면서 그 범위를 A에 맞게 제한하였다.
따라서 아래와 같이
SELECT A.CAR_SERIES, B.OPTION_SERIES
~~~
B의 OPTION 정보를 가져온다고 한다면, JOIN 조건에서 제한한 데이터 범위 내에서 B의 OPTION_SERIES를 추출할 수 있게 된다.
※ 단, 제한하고자 하는 대상은 결합대상 table인 B에 속하므로 join 표시(+)를 해주어야 한다.