Dalam hal penggabungan, kebanyakan dari kita bekerja dengan batasan dua tabel dan semacamnya. Namun, biasanya diperlukan penggabungan tiga tabel untuk mendapatkan tata letak dan wawasan data yang lebih bermakna. Ambil contoh saat Anda ingin mengambil daftar film, inventaris persewaan terkait, dan detail persewaan sebenarnya. Masing-masing unit seperti film, inventaris, dan detail persewaan ada di tabel tersendiri.
Dalam tutorial ini, kami akan memandu Anda melalui berbagai gabungan dan teknik yang dapat Anda gunakan untuk menggabungkan tiga tabel di SQL.
Persyaratan:
Untuk tujuan demonstrasi, kami akan menggunakan MySQL versi 80 dan contoh database Sakila. Untuk mengikutinya, Anda dapat mengunduh dan mengatur database Sakila di server MySQL Anda. Jangan ragu untuk menggunakan kumpulan data lain yang Anda anggap dapat diterapkan.
Jenis Gabungan di SQL
Sebelum kita masuk ke penerapan join, mari kita mulai dengan membahas berbagai jenis join yang tersedia di database SQL.
GABUNG DALAM
Jenis join yang pertama adalah INNER JOIN. Jenis gabungan ini hanya mengembalikan baris yang berisi nilai yang cocok di kedua tabel. Ini adalah jenis penggabungan yang sangat umum dan paling sederhana ketika menggabungkan dua tabel.
Sintaksnya adalah sebagai berikut:
PILIH kolomDARI tabel1
INNER JOIN tabel2 PADA table1.column_name = table2.column_name;
KIRI GABUNG
Dalam kasus LEFT JOIN, ia mengembalikan semua baris dari tabel kiri dan baris yang cocok dari tabel kanan. Jika tidak ada nilai yang cocok dari tabel kanan, gabungan akan menambahkan nilai NULL sebagai gantinya.
Sintaksnya adalah sebagai berikut:
PILIH kolomDARI tabel1
KIRI GABUNG tabel2 PADA table1.column_name = table2.column_name;
BENAR BERGABUNG
Seperti yang bisa Anda tebak, RIGHT JOIN adalah kebalikan dari LEFT JOIN. Jenis gabungan ini mengembalikan semua baris dari tabel kanan dan hanya baris yang cocok dari tabel kiri. Jika tidak ada baris yang cocok di tabel kiri, gabungan akan menambahkan nilai NULL ke dalamnya.
Berikut ini adalah sintaks dari RIGHT JOIN:
PILIH kolomDARI tabel1
KANAN GABUNG tabel2 PADA table1.column_name = table2.column_name;
GABUNG LUAR LENGKAP
Jenis join berikutnya yang akan Anda temui di database SQL adalah FULL OUTER JOIN. Jenis gabungan ini mengembalikan semua baris ketika ada kecocokan di tabel kanan atau kiri. Jika tidak ada nilai yang cocok di salah satu dari keduanya, ia mengembalikan NULL untuk kolom dari tabel tanpa kecocokan.
Berikut ini menunjukkan sintaks dari FULL OUTER JOIN:
PILIH kolomDARI tabel1
Tabel OUTER JOIN LENGKAP2 PADA table1.column_name = table2.column_name;
Perlu diingat bahwa tidak semua mesin database mendukung FULL OUTER JOINS. Untuk mencapai hal tersebut, Anda mungkin perlu bekerja dengan tipe GABUNG atau subkueri lainnya.
Contoh:
Mari kita jelajahi beberapa contoh tentang bagaimana kita dapat menggunakan jenis gabungan ini untuk menggabungkan tiga tabel di SQL.
Contoh 1: Menggunakan INNER JOIN
Kita mulai dengan INNER JOIN. Misalkan kita ingin mengambil daftar film, inventaris persewaan, dan detail persewaan yang sesuai.
Kita dapat menggunakan beberapa INNER JOINS pada tabel terkait seperti yang ditunjukkan pada contoh berikut:
PILIHfilm.judul,
inventaris.inventory_id,
sewa.rental_date
DARI
film
inventaris INNER JOIN PADA
film.film_id = inventaris.film_id
Penyewaan INNER JOIN PADA
inventory.inventory_id = sewa.inventory_id;
Dalam contoh kueri yang diberikan, kita mulai dengan menggabungkan tabel film dan inventaris berdasarkan kolom “film_id”. Kami kemudian mengambil set yang dihasilkan dan menggabungkannya dengan tabel rental berdasarkan kolom “inventory_id”.
Ini memastikan bahwa kita menggabungkan tiga tabel dengan INNER JOIN dasar. Himpunan yang dihasilkan adalah sebagai berikut:
Contoh 2: Menggunakan INNER JOIN dan LEFT JOIN
Katakanlah sekarang kita menginginkan daftar film, daftar inventaris persewaan (jika ada), dan detail persewaan terkait.
Kami juga ingin memastikan bahwa meskipun sebuah film tidak memiliki inventaris rental, kami tetap menyertakannya dalam hasil. Di sinilah INNER JOIN dan LEFT JOIN berperan.
Perhatikan contoh berikut:
PILIHfilm.judul,
inventaris.inventory_id,
sewa.rental_date
DARI
film
inventaris INNER JOIN PADA
film.film_id = inventaris.film_id
KIRI BERGABUNG sewa PADA
inventory.inventory_id = sewa.inventory_id;
Dalam contoh ini, kami menggunakan INNER JOIN untuk menggabungkan tabel film dan inventaris untuk memastikan bahwa kami mendapatkan judul dengan inventaris yang tersedia. Kami kemudian menggunakan LEFT JOIN untuk bergabung dengan tabel rental guna mengambil detail rental jika tersedia dan NULL untuk judul apa pun yang tidak memiliki riwayat rental.
Himpunan yang dihasilkan adalah sebagai berikut:
Kesimpulan
Dalam tutorial ini, kita belajar tentang berbagai tipe JOINS di SQL, cara kerjanya, dan bagaimana kita dapat menggunakannya untuk menggabungkan tiga tabel.