SQL 정리

OUTER, 테이블 여러개를 JOIN해야되는 경우

wanduek 2024. 7. 23. 09:43

테이블 여러개를 JOIN해야되는 경우

SELECT 
    a.columnA,
    b.columnB,
    c.columnC
FROM 
    TableA a
INNER JOIN 
    TableB b ON a.key = b.foreignKeyA
INNER JOIN 
    TableC c ON b.key = c.foreignKeyB;

 

LEFT JOIN을 사용한 예제

 

SELECT 
    t1.id AS Table1_ID,
    t1.columnA AS Table1_ColumnA,
    t2.id AS Table2_ID,
    t2.columnB AS Table2_ColumnB,
    t3.id AS Table3_ID,
    t3.columnC AS Table3_ColumnC
FROM 
    Table1 t1
LEFT JOIN 
    Table2 t2 ON t1.id = t2.table1_id
LEFT JOIN 
    Table3 t3 ON t2.id = t3.table2_id;

 

 

OUTER JOIN이란?

 

OUTER JOIN은 두 테이블을 결합할 때, 조인 조건에 맞지 않는 행도 포함시켜서 결과를 반환하는 조인 유형을 말합니다. OUTER JOIN은 세 가지 유형으로 나눌 수 있습니다:

 

LEFT OUTER JOIN: 왼쪽 테이블의 모든 행을 반환하고, 오른쪽 테이블에서 일치하는 행이 없으면 NULL을 반환합니다.

 

RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행을 반환하고, 왼쪽 테이블에서 일치하는 행이 없으면 NULL을 반환합니다.

 

FULL OUTER JOIN: 양쪽 테이블의 모든 행을 반환하고, 한쪽 테이블에서 일치하는 행이 없으면 NULL을 반환합니다.

 

LEFT OUTER JOIN

LEFT OUTER JOIN: 모든 환자의 정보를 반환하고, 환자가 예약을 가지고 있지 않다면 APPOINTMENT 테이블의 값은 NULL이 됩니다. 

왼쪽 테이블의 모든 행을 포함하고, 오른쪽 테이블의 일치하지 않는 값은 NULL로 채웁니다.

SELECT 
    P.PT_NAME,
    A.APNT_NO,
    A.MCDP_CD
FROM 
    PATIENT P
LEFT OUTER JOIN 
    APPOINTMENT A ON P.PT_NO = A.PT_NO;

 

RIGHT OUTER JOIN

RIGHT OUTER JOIN: 모든 예약 정보를 반환하고, 예약된 환자의 정보가 없는 경우 PATIENT 테이블의 값은 NULL이 됩니다.

오른쪽 테이블의 모든 행을 포함하고, 왼쪽 테이블의 일치하지 않는 값은 NULL로 채웁니다.

SELECT 
    P.PT_NAME,
    A.APNT_NO,
    A.MCDP_CD
FROM 
    PATIENT P
RIGHT OUTER JOIN 
    APPOINTMENT A ON P.PT_NO = A.PT_NO;

 

FULL OUTER JOIN

FULL OUTER JOIN: 모든 환자 정보와 모든 예약 정보를 반환하고, 어느 한쪽 테이블에서 일치하지 않는 값은 NULL이 됩니다.

양쪽 테이블의 모든 행을 포함하고, 한쪽 테이블의 일치하지 않는 값은 NULL로 채웁니다.

SELECT 
    P.PT_NAME,
    A.APNT_NO,
    A.MCDP_CD
FROM 
    PATIENT P
FULL OUTER JOIN 
    APPOINTMENT A ON P.PT_NO = A.PT_NO;
반응형