LEFT JOIN menampilkan SEMUA baris dari tabel kiri, meskipun tidak ada kecocokan di tabel kanan.
SELECT u.name, COUNT(p.id) as jumlah_post
FROM users u
LEFT JOIN posts p ON u.id = p.user_id
GROUP BY u.id;
Perbedaan INNER vs LEFT JOIN:
| INNER JOIN | LEFT JOIN |
|---|---|
| Hanya baris yang cocok | Semua dari kiri + cocok dari kanan |
| User tanpa post: tidak muncul | User tanpa post: muncul (post = NULL) |
Kapan pakai LEFT JOIN?
- Menampilkan user yang belum punya post
- Menghitung jumlah relasi (termasuk yang 0)
- Menemukan data yang tidak punya pasangan
-- Cari user yang belum pernah posting
SELECT u.name
FROM users u
LEFT JOIN posts p ON u.id = p.user_id
WHERE p.id IS NULL;
RIGHT JOIN: kebalikan LEFT JOIN — semua dari tabel kanan. Jarang dipakai karena bisa dibalik jadi LEFT JOIN.