Mix and match - LEFT & RIGHT join

Pengantar SQL Server

John MacKintosh

Instructor

Alasan `LEFT` dan `RIGHT` join

  • Mengapa kita perlu LEFT dan RIGHT join?
  • Satu tabel mungkin tidak punya padanan tepat di tabel lain:
    • Riwayat pesanan pelanggan untuk kampanye pemasaran
    • Daftar produk dan riwayat retur
    • Pasien masuk tetapi belum dipulangkan
Pengantar SQL Server

Alasan `LEFT` dan `RIGHT` join

  • Mengapa kita perlu LEFT dan RIGHT join?
  • Satu tabel mungkin tidak punya padanan tepat di tabel lain:
    • Riwayat pesanan pelanggan untuk kampanye pemasaran
    • Daftar produk dan riwayat retur
    • Pasien masuk tetapi belum dipulangkan
Pengantar SQL Server

Tabel Admissions

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

Tabel 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       |
+------------+----------+------------+
Pengantar SQL Server

Sintaks LEFT JOIN

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

Pengantar 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       |
+------------+----------+------------+
Pengantar SQL Server

RIGHT JOIN

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

Pengantar SQL Server

Hasil 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       |
+------------+----------+------------+
Pengantar SQL Server

Ringkasan

  • INNER JOIN: Hanya baris yang cocok
  • LEFT JOIN (atau RIGHT JOIN): Semua baris dari tabel utama plus kecocokan dari tabel join
  • NULL: Ditampilkan jika tidak ada kecocokan
  • LEFT JOIN dan RIGHT JOIN bisa saling menggantikan
Pengantar SQL Server

Pengantar SQL Server

Ayo berlatih!

Pengantar SQL Server

Preparing Video For Download...