테이블 여러개를 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;
'SQL 정리' 카테고리의 다른 글
DATEDIFF (0) | 2024.07.27 |
---|---|
with (5) | 2024.07.24 |
CONCAT과 SUBSTRING 응용 (0) | 2024.07.20 |
SQL정리. 6 (USING) (0) | 2024.07.08 |
SQL 정리 .5 (0) | 2024.07.04 |