혼합 사용 - LEFT & RIGHT 조인

SQL Server 입문

John MacKintosh

Instructor

LEFT/RIGHT 조인의 필요성

  • LEFTRIGHT 조인이 필요할까요?
  • 한 테이블에 다른 테이블의 정확한 매칭이 없을 수 있음:
    • 마케팅 캠페인을 위한 고객 주문 이력
    • 상품 목록과 반품 이력
    • 입원했지만 아직 퇴원하지 않은 환자
SQL Server 입문

LEFT/RIGHT 조인의 필요성

  • LEFTRIGHT 조인이 필요할까요?
  • 한 테이블에 다른 테이블의 정확한 매칭이 없을 수 있음:
    • 마케팅 캠페인을 위한 고객 주문 이력
    • 상품 목록과 반품 이력
    • 입원했지만 아직 퇴원하지 않은 환자
SQL Server 입문

입원 테이블

+------------+----------+
| Patient_ID | Admitted | 
|------------+----------|
| 1          | 1        |
| 2          | 1        |
| 3          | 1        |
| 4          | 1        |
| 5          | 1        |
+------------+----------+

퇴원 테이블

+------------+------------+
| Patient_ID | Discharged | 
|------------+------------|
| 1          | 1          |
| 3          | 1          |
| 4          | 1          |
+------------+------------+

INNER JOIN:

+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
+------------+----------+------------+

LEFT JOIN:

+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 2          | 1        | NULL       |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
| 5          | 1        | NULL       |
+------------+----------+------------+
SQL Server 입문

LEFT JOIN 구문

SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Admitted 
LEFT JOIN Discharged ON Discharged.Patient_ID = Admitted.Patient_ID;

SQL Server 입문
SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Admitted 
LEFT JOIN Discharged ON Discharged.Patient_ID = Admitted.Patient_ID;
+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 2          | 1        | NULL       |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
| 5          | 1        | NULL       |
+------------+----------+------------+
SQL Server 입문

RIGHT JOIN

SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Discharged 
RIGHT JOIN Admitted ON Admitted.Patient_ID = Discharged.Patient_ID;

SQL Server 입문

RIGHT JOIN 결과

SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Discharged 
RIGHT JOIN Admitted ON Admitted.Patient_ID = Discharged.Patient_ID;
+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 2          | 1        | NULL       |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
| 5          | 1        | NULL       |
+------------+----------+------------+
SQL Server 입문

요약

  • INNER JOIN: 일치하는 행만 반환
  • LEFT JOIN(또는 RIGHT JOIN): 기준 테이블의 모든 행 + 조인 테이블의 일치 행
  • NULL: 일치 없음일 때 표시
  • LEFT JOINRIGHT JOIN은 상호 대체 가능
SQL Server 입문

SQL Server 입문

Let's Practice!

SQL Server 입문

Preparing Video For Download...