Mix n match - LEFT & RIGHT joins

SQL Server เบื้องต้น

John MacKintosh

Instructor

เหตุผลที่ต้องใช้ LEFT และ RIGHT joins

  • ทำไมต้องใช้ LEFT และ RIGHT joins?
  • ตารางหนึ่งอาจไม่มีข้อมูลที่ตรงกันในอีกตาราง:
    • ประวัติการสั่งซื้อของลูกค้าสำหรับแคมเปญการตลาด
    • รายการสินค้าและประวัติการคืนสินค้า
    • ผู้ป่วยที่รับเข้าแต่ยังไม่ได้จำหน่าย
SQL Server เบื้องต้น

เหตุผลที่ต้องใช้ LEFT และ RIGHT joins

  • ทำไมต้องใช้ LEFT และ RIGHT joins?
  • ตารางหนึ่งอาจไม่มีข้อมูลที่ตรงกันในอีกตาราง:
    • ประวัติการสั่งซื้อของลูกค้าสำหรับแคมเปญการตลาด
    • รายการสินค้าและประวัติการคืนสินค้า
    • ผู้ป่วยที่รับเข้าแต่ยังไม่ได้จำหน่าย
SQL Server เบื้องต้น

ตาราง Admissions

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

ตาราง Discharges

+------------+------------+
| 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): คืนค่าทุกแถวจากตารางหลัก พร้อมแถวที่ตรงกันจากตารางที่ join
  • NULL: แสดงเมื่อไม่พบข้อมูลที่ตรงกัน
  • LEFT JOIN และ RIGHT JOIN สามารถใช้แทนกันได้
SQL Server เบื้องต้น

SQL Server เบื้องต้น

มาฝึกกันเถอะ!

SQL Server เบื้องต้น

Preparing Video For Download...