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 LEFT và RIGHT 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 LEFT và RIGHT 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 JOIN và RIGHT 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...