Web Programming/DB
[ORACLE] LATERAL 조인 함수 / OUTER APPLY 조인 함수
jaey0ng
2023. 2. 15. 11:14
설명에 들어가기에 앞서 기본 JOIN문을 모르시는 분은 앞 문서부터 읽어보시길 바랍니다.
2023.01.30 - [Web Programming/DB] - [ORACLE] 조인 쿼리(join query), 조인 종류, 조인 쿼리 예시
LATERAL 조인을 사용하는 경우는 A, B, C 테이블이 있다고 가정해봅시다.
A가 드라이빙테이블(메인테이블)이라고 생각해봅시다.
A와 B는 PK값으로 조인이 잘 이루어 집니다. 그러나
A와 C는 조인을 할 PK값이 없다고 가정합니다. (B와 C는 조인이 가능합니다.)
SELECT A.NAME
, B.SCHOOL
, C.SCHOOL_MONEY
FROM NN A
, SC B
, LATERAL (
SELECT SCHOOL_MONEY
FROM SM
WHERE SCHOOL = B.SCHOOL
) (+) C
WHERE 1=1
AND A.NAME = B.NAME(+)
이런식으로 OUTER JOIN에 OUTER JOIN을 건 테이블을 걸 수 있습니다.
다른방식으로 사용해보겠습니다.
SELECT A.NAME
, B.SCHOOL
, C.SCHOOL_MONEY
FROM NN A
LEFT OUTER JOIN SC B
ON A.NAME = B.NAME
OUTER APPLY (
SELECT SCHOOL_MONEY
FROM SM
WHERE SCHOOL = B.SCHOOL
) C
이렇게 사용하실 수도 있습니다.
드라이빙 테이블에 JOIN을 해둔 테이블을 JOIN거는 방법이였습니다.