Belajar Database MySQL #9: Menggabungkan Tabel dengan JOIN
Heru Iryanto
Teacher, Content Creator and Full-Stack DeveloperSelamat datang di materi yang konon sering membuat calon pelamar kerja gagal di tes koding (Technical Test): JOIN.
Di materi sebelumnya, kita sudah memecah data menjadi 3 Laci/Tabel berbeda untuk mencegah Redudansi.
- Laci 1 (
tabel_buku) menyimpan Judul asli. - Laci 2 (
tabel_anggota) menyimpan Nama asli. - Laci 3 (
tabel_peminjaman) hanya berisi Angka-Angka sandi silang (Foreign Key).
Jika kita menjalankan perintah SELECT * FROM tabel_peminjaman, yang muncul di layar browser cumalah deretan angka ID Buku: 1, ID Anggota: 1. Pengguna website Anda tidak akan bisa membacanya.
Kita harus menyatukan kembali kepingan puzzle tersebut agar tampil menjadi satu laporan utuh berbahasa manusia.
1️⃣ Konsep INNER JOIN
Fungsi dari JOIN adalah: “Tolong ambilkan saya sebuah kolom di Laci B, dengan syarat kunci ID-nya harus sama dengan ID yang ada di Laci A”.
Mari kita satukan tabel_peminjaman dengan tabel_anggota agar angka ID-nya berubah menjadi Nama.
Buka Tab SQL, dan perhatikan baik-baik logika penulisan kode ini:
SELECT
tabel_peminjaman.id_peminjaman,
tabel_anggota.nama_anggota
FROM tabel_peminjaman
INNER JOIN tabel_anggota
ON tabel_peminjaman.id_anggota_peminjam = tabel_anggota.id_anggota;
Analisis Paragraf per Paragraf:
- SELECT: Tolong tampilkan di layar
id_peminjamandannama_anggota. (Perhatikan bahwa karena kolomnya tersebar di dua tabel berbeda, kita harus menyebutkan nama_tabel.nama_kolom agar MySQL tidak kebingungan). - FROM: Dari markas besarnya, yaitu
tabel_peminjaman. - INNER JOIN: Tolong kawinkan markas besar tersebut dengan
tabel_anggota. - ON (Sang Penghulu): Syarat perkawinannya adalah: Angka di dalam kolom
id_anggota_peminjam(Si Kunci Tamu) HARUS SAMA PERSIS (=) dengan angka yang ada di kolomid_anggota(KTP asli milik tabel_anggota).
Klik Go! Hasilnya? ID 1 di transaksi akan disulap kembali menjadi nama “Budi”!
2️⃣ Double JOIN (Menggabungkan 3 Tabel Sekaligus)
Laporan di atas masih cacat karena kita belum memunculkan “Judul Buku” apa yang dipinjam Budi.
Bagaimana cara menempelkan tabel_buku ke dalam laporan tersebut? Cukup tambahkan klausa INNER JOIN satu lagi di bawahnya!
SELECT
tabel_peminjaman.id_peminjaman,
tabel_anggota.nama_anggota,
tabel_buku.judul_buku
FROM tabel_peminjaman
INNER JOIN tabel_anggota
ON tabel_peminjaman.id_anggota_peminjam = tabel_anggota.id_anggota
INNER JOIN tabel_buku
ON tabel_peminjaman.id_buku_yg_dipinjam = tabel_buku.id_buku;
Boom! Saat Anda klik Go, muncullah sebuah Tabel Laporan Sempurna berisikan: ID Transaksi 1 | Nama: Budi | Meminjam Judul: Harry Potter.
3️⃣ Trik Alias (AS) untuk Mempersingkat Kode
Kode panjang di atas bisa membuat tangan Anda keriting. Programmer biasanya menyingkat nama tabel menggunakan inisial (Alias/AS).
Kode di atas jika dipersingkat menjadi seperti ini:
SELECT
p.id_peminjaman,
a.nama_anggota,
b.judul_buku
FROM tabel_peminjaman AS p
INNER JOIN tabel_anggota AS a ON p.id_anggota_peminjam = a.id_anggota
INNER JOIN tabel_buku AS b ON p.id_buku_yg_dipinjam = b.id_buku;
(Lihat betapa rapi dan singkatnya kodingan tersebut! Ini adalah bentuk kodingan profesional yang akan Anda temui setiap hari).
🗽 Kesimpulan
Mengapa hal yang begitu merepotkan ini (Memecah tabel lalu menggabungkannya lagi pakai JOIN) dilakukan oleh semua perusahaan teknologi dunia?
Jawabannya kembali ke materi sebelumnya: Agar data terpusat (Tidak Redundan/Bertumpuk).
Budi boleh meminjam 1.000 buku di tabel transaksi. Jika besok Budi ganti nama menjadi “Budi Cemerlang”, kita hanya perlu melakukan 1x perintah UPDATE di tabel anggota. Setelah itu, 1.000 riwayat transaksi peminjaman tersebut akan otomatis terganti namanya karena semuanya menarik data melalui tali JOIN secara real-time!
Kita sudah merampungkan seluruh fundamental penyimpanan data rasional. Saatnya Anda mengambil selembar kertas putih, dan mari kita mendesain arsitektur lengkap Sistem Perpustakaan Anda dari nol hingga jadi di Proyek Akhir (Database Perpustakaan).
