본문 바로가기
Web Programming/DB

[ORACLE] LATERAL 조인 함수 / OUTER APPLY 조인 함수

by jaey0ng 2023. 2. 15.

설명에 들어가기에 앞서 기본 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거는 방법이였습니다.