Kekuatan relational database ada pada kemampuan merangkai data yang terpisah di banyak tabel. Section ini membedah setiap jenis join dengan tabel contoh kecil supaya kita bisa melihat persis baris mana yang lolos dan baris mana yang hilang di setiap tipe join.

# Konsep Relasi Antartabel

Mengapa data database relasional dipecah ke banyak tabel, bagaimana relasi satu-ke-banyak dibangun lewat foreign key pada kolom kunci, serta cara menggabungkan kembali data terpisah dari dua tabel sebelum mengenal JOIN.

Buka →
# INNER JOIN

Bedah INNER JOIN di MySQL: menggabungkan pelanggan dan pesanan lewat klausa ON, memakai alias tabel pendek, membuktikan bahwa baris tanpa pasangan tidak ikut tampil, varian USING untuk kolom bernama sama, serta kombinasi JOIN dengan WHERE dan ORDER BY.

Buka →
# LEFT JOIN

Bedah LEFT JOIN di MySQL: mempertahankan seluruh baris sisi kiri dengan pengisi NULL untuk baris tanpa pasangan, pola anti-join LEFT JOIN + IS NULL untuk mencari pelanggan yang belum pernah memesan, serta jebakan COUNT(*) versus COUNT kolom kanan saat menghitung pesanan per pelanggan.

Buka →
# RIGHT JOIN

Bedah RIGHT JOIN di MySQL: mempertahankan seluruh baris sisi kanan dengan pengisi NULL di sisi kiri, mengapa desain foreign key membuat hasilnya bisa terlihat sama dengan INNER JOIN, serta kebiasaan menulis ulang RIGHT JOIN sebagai LEFT JOIN terbalik demi portabilitas.

Buka →
# CROSS JOIN

Bedah CROSS JOIN di MySQL: hasil perkalian Cartesian baris a×b, perbandingan sintaks CROSS JOIN eksplisit dengan koma lama, kombinasi ukuran×warna produk sebagai kasus nyata, bahaya lupa klausa ON yang diam-diam memicu Cartesian product, serta penyaringan hasil dengan WHERE.

Buka →
# SELF JOIN

Bedah self join di MySQL: meng-join satu tabel dengan dirinya sendiri memakai dua alias — pegawai dipasangkan dengan manajernya lewat kolom manajer_id, pegawai ber-induk NULL ditangani LEFT JOIN, serta pola rekan satu atasan dengan kondisi tambahan di ON.

Buka →
# Multiple Joins

Bedah join bertingkat tiga tabel di MySQL: merangkai pelanggan, pesanan, dan detail pesanan dalam satu query, membuktikan urutan join bebas asalkan rantai kunci tersambung, lalu menggabungkan tiga tabel dengan agregat SUM dan COUNT(DISTINCT) per pelanggan.

Buka →
# JOIN dengan Kondisi

Bedah kondisi tambahan pada klausa ON join MySQL: memfilter pesanan langsung dari ON, perbedaan mendasar kondisi di ON versus WHERE pada LEFT JOIN yang bisa diam-diam merosot menjadi INNER JOIN, serta non-equi join dengan kondisi pertidaksamaan seperti total pesanan terhadap syarat promo.

Buka →
# Menghindari Duplikasi Hasil JOIN

Bedah duplikasi baris hasil join 1-N di MySQL: satu pelanggan tiga pesanan menjadi tiga baris, jebakan klasik SUM yang melonjong saat pesanan digandakan detailnya, solusi agregat di subquery sebelum join, penggunaan DISTINCT yang sah dan yang menutup masalah, serta teaser EXISTS dari section subqueries.

Buka →