Kết hợp linh hoạt - JOIN LEFT & RIGHT

Giới thiệu về SQL Server

John MacKintosh

Instructor

Lý do dùng LEFT và RIGHT JOIN

  • Tại sao cần LEFTRIGHT JOIN?
  • Có thể không có khớp chính xác giữa hai bảng:
    • Lịch sử đơn hàng khách cho chiến dịch marketing
    • Danh sách sản phẩm và lịch sử hoàn trả
    • Bệnh nhân đã nhập viện nhưng chưa xuất viện
Giới thiệu về SQL Server

Lý do dùng LEFT và RIGHT JOIN

  • Tại sao cần LEFTRIGHT JOIN?
  • Có thể không có khớp chính xác giữa hai bảng:
    • Lịch sử đơn hàng khách cho chiến dịch marketing
    • Danh sách sản phẩm và lịch sử hoàn trả
    • Bệnh nhân đã nhập viện nhưng chưa xuất viện
Giới thiệu về SQL Server

Bảng nhập viện

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

Bảng xuất viện

+------------+------------+
| 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       |
+------------+----------+------------+
Giới thiệu về SQL Server

Cú pháp LEFT JOIN

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

Giới thiệu về 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       |
+------------+----------+------------+
Giới thiệu về SQL Server

RIGHT JOIN

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

Giới thiệu về SQL Server

Kết quả 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       |
+------------+----------+------------+
Giới thiệu về SQL Server

Tóm tắt

  • INNER JOIN: Chỉ trả về các hàng khớp
  • LEFT JOIN (hoặc RIGHT JOIN): Tất cả hàng từ bảng chính và các khớp từ bảng nối
  • NULL: Hiển thị khi không có khớp
  • LEFT JOINRIGHT JOIN có thể hoán đổi cho nhau
Giới thiệu về SQL Server

Giới thiệu về SQL Server

Ayo berlatih!

Giới thiệu về SQL Server

Preparing Video For Download...