쿼리 문의를 드리겠습니다.
T1 테이블의 2, 3번째 컬럼이 T2, T3 테이블로 외래키 걸려 있습니다.
T1 테이블의 레코드 수와 동일한 레코드 수의 결과를 도출하고 싶습니다.
T1 테이블의 2번째 컬럼이 null 이면 null 로 출력하고 값이 있으면 T2 테이블의 해당 외래키 조건의 다른컬럼 값을 가져오고 싶습니다.
T1 테이블의 3번째 컬럼이 null 이면 null 로 출력하고 값이 있으면 T3 테이블의 해당 외래키 조건의 다른컬럼 값을 가져오고 싶습니다.
T1테이블 | |||||
A1 | T2_B1 | T3_C1 | A4 | ||
A001 | B001 | (null) | D001 | ||
A002 | (null) | C001 | D002 | ||
A003 | (null) | (null) | D003 | ||
T2 | |||||
B1 | B2 | B3 | |||
B001 | B0001 | B00001 | |||
T3 | |||||
C1 | C2 | C3 | |||
C001 | C0001 | C00001 | |||
결과 | |||||
T1.A1 | T2.B2 | T2.B3 | T3.C2 | T3.C3 | T1.A4 |
A001 | B0001 | B00001 | (null) | (null) | D001 |
A002 | (null) | (null) | C0001 | C00001 | D002 |
A003 | (null) | (null) | (null) | (null) | D003 |
WITH t1 AS ( SELECT 'A001' a1, 'B001' t2_b1, null t3_c1, 'D001' a4 FROM dual UNION ALL SELECT 'A002', null , 'C001', 'D002' FROM dual UNION ALL SELECT 'A003', null , null , 'D003' FROM dual ) , t2 AS ( SELECT 'B001' b1, 'B0001' b2, 'B00001' b3 FROM dual ) , t3 AS ( SELECT 'C001' c1, 'C0001' c2, 'C00001' c3 FROM dual ) SELECT a.a1 , b.b2 , b.b3 , c.c2 , c.c3 , a.a4 FROM t1 a LEFT OUTER JOIN t2 b ON a.t2_b1 = b.b1 LEFT OUTER JOIN t3 c ON a.t3_c1 = c.c1 ORDER BY a1 ;