Overview
Operasi SQL JOIN sangat berguna apabila kita ingin menggabungkan dua atau lebih tabel menjadi satu. Beberapa jenis operator JOIN yang sering digunakan adalah INNER JOIN, LEFT JOIN, RIGHT JOIN, dan FULL OUTER JOIN.
Terkadang, sebuah tabel dalam database memiliki banyak sekali kolom. Karena jumlah kolom terlalu banyak, maka kadang programmer memecah tabel tersebut menjadi beberapa tabel lainnya, untuk mempermudah pencarian data.
Alasan lain untuk memecah data adalah apabila tabel tersebut berisikan informasi yang tidak berkaitan satu sama lain, maka ada baiknya kolom dalam tabel tersebut dipisah agar mudah untuk dianalisis.
Namun ada beberapa kondisi ketika kita butuh menggabungkan beberapa tabel agar kita dapat menarik kesimpulan dari data yang ditampilkan. Hal itu membutuhkan query tersendiri pada SQL.
Dalam SQL, operator JOIN digunakan untuk menggabungkan data dari dua atau lebih tabel berdasarkan sebuah kolom yang sama. Dengan operator ini, kita bisa membuat tabel yang lebih besar yang memiliki data dari sumber yang berbeda, yang berguna ketika kita ingin mencari jawaban atau informasi dari berbagai macam sumber tabel.
Jenis-jenis SQL Join Operator yang Umum Digunakan
Ada beberapa macam operasi JOIN, beberapa yang sering digunakan adalah INNER JOIN, LEFT JOIN, RIGHT JOIN, dan FULL OUTER JOIN. Tiap JOIN berikut ini mempunyai output yang berbeda terhadap data yang ditampilkan. Kita akan membahas tiap bentuk JOIN ini satu per satu.
#1 INNER JOIN
Ketika menggunakan operasi INNER JOIN untuk menggabungkan dua tabel, maka hasil keluaran dari operasi ini mengembalikan baris yang mana nilai kolom referensi tersebut ditemukan di kedua tabel. Apabila operasi jenis ini digambarkan pada sebuah diagram, maka bentuk penggabungan dua tabel menjadi seperti berikut:
Untuk bentuk penulisan query dari operasi ini sendiri adalah sebagai berikut :
Pada contoh query di atas, kita akan menggabungkan tabel unified_orders dengan tabel customer_info. Data yang akan kita tampilkan adalah customer_id dan customer_name dari tabel customer_info, dan transaction_date dan transaction_value dari tabel unified_orders.
Dengan tipe JOIN tersebut, kita akan mencocokkan nama customer untuk tiap transaksi yang terjadi, untuk mengetahui transaksi dari member yang telah terdaftar datanya di database kita.
Dengan menggunakan operasi INNER JOIN, maka data yang dikembalikan sebagai keluaran hanya data baris yang nilainya ada di kedua kolom c.customer_id dan o.customer_id.
Apabila ada data yang nilainya tidak ada di salah satu kolom customer_id ini, maka data tersebut tidak akan ditampilkan. Dengan operasi ini, dapat dipastikan bahwa semua nama customer yang merupakan member akan dapat ditampilkan.
#2 LEFT JOIN
Ketika menggunakan operasi LEFT JOIN, maka seluruh baris dari tabel sebelah kiri dan nama tabel setelah klausa FROM akan dikembalikan. Lalu, data pada tabel kedua, nama tabel setelah klausa LEFT JOIN akan dikembalikan.
Dengan operator ini, sudah dipastikan seluruh baris pada tabel pertama setelah klausa FROM akan muncul. Apabila ada beberapa data yang ada di tabel pertama ini, namun tidak ada di tabel kedua, maka nilai pada tabel kedua ini akan berisikan NULL untuk kolomnya.
Operator ini berguna apabila kita mau menarik seluruh data dari salah satu tabel, walaupun data tersebut tidak ada di tabel satunya. A
pabila operasi ini digambarkan dalam bentuk diagram, maka bentuk diagramnya akan menjadi seperti berikut:
Untuk penulisan query dari operasi ini adalah sebagai berikut :
Pada contoh query di atas, kita akan menggabungkan tabel unified_orders dengan tabel customer_info. Data yang akan kita tampilkan adalah customer_id dan customer_name dari tabel customer_info, dan transaction_date dan transaction_value dari tabel unified_orders.
Dengan tipe JOIN tersebut, kita akan mencocokkan nama customer untuk tiap transaksi yang terjadi, untuk melihat seluruh transaksi yang terjadi dalam database kita. Karena menggunakan operasi LEFT JOIN, seluruh data transaksi akan dikembalikan, lalu kita akan mengecek nama tiap customer.
Apabila data customer_id ditemukan dalam tabel customer_info, maka c.customer_id dan c.customer_name akan memiliki nilai sesuai dengan o.customer_id. Namun apabila data tersebut tidak ditemukan pada tabel customer_info, maka SQL akan mengembalikan nilai NULL.
Contoh penulisan query di atas berguna untuk membandingkan berapa banyak transaksi yang dilakukan oleh member dan non-member.
{{COMPONENT_IDENTIFIER}}
#3 RIGHT JOIN
Ketika menggunakan operasi RIGHT JOIN, logikanya sama seperti ketika kita menggunakan LEFT JOIN. Namun, keluaran dari operator tersebut mengembalikan seluruh data pada tabel kedua, yaitu tabel yang ditulis setelah klausa RIGHT JOIN.
Apabila data baris tersebut tidak ditemukan pada tabel pertama, maka nilai kolom pada tabel pertama akan berisi NULL.
Pada praktiknya, operasi JOIN ini jarang digunakan, karena memiliki logika yang sama dengan LEFT JOIN, dan biasanya programmer hanya menukar posisi penulisan tabel pertama dan tabel kedua, dan menggunakan operator LEFT JOIN.
Namun apabila kita telah menuliskan query yang kompleks, terkadang operasi RIGHT JOIN ini juga dapat digunakan untuk menghemat waktu penulisan query yang panjang. Apabila jenis operator JOIN ini digambarkan dalam bentuk diagram, maka bentuk diagramnya akan menjadi seperti ini:
Untuk penulisan query dari operasi ini adalah sebagai berikut:
Pada contoh query di atas, kita akan menggabungkan tabel unified_orders dengan tabel customer_info. Data yang akan kita tampilkan adalah customer_id dan customer_name dari tabel customer_info, dan transaction_date dan transaction_value dari tabel unified_orders.
Dengan tipe JOIN tersebut, kita akan mengeluarkan semua nama customer dari tabel customer_info, lalu tiap customer akan dicek kapan mereka transaksi (o.transaction_date) dan berapa nominal transaksinya (o.transaction_value).
Karena menggunakan RIGHT JOIN, seluruh informasi customer dari customer_info akan ditampilkan, dan apabila ada customer yang tidak bertransaksi, maka nilai pada o.transaction_value dan o.transaction_date akan berisi NULL.
Contoh penulisan query di atas sangat berguna apabila kita ingin mengecek retensi pembelian dari tiap customer dan nominal yang mereka keluarkan.
#4 FULL OUTER JOIN
Ketika menggunakan operasi FULL OUTER JOIN, seluruh data pada kedua tabel akan dikembalikan, termasuk baris yang tidak punya nilai yang sama pada kolom referensi.
Apabila ada baris yang tidak memiliki nilai yang sama pada kolom referensi, maka kolom tersebut akan bernilai NULL, aturan ini berlaku untuk kedua tabel.
Namun perlu diperhatikan karena operasi ini menggabungkan dua buah tabel menjadi satu, maka tabel yang dihasilkan dari operasi ini akan menjadi sangat besar, dan akan membutuhkan waktu proses yang lebih lama. Apabila jenis operator JOIN ini digambarkan dalam bentuk diagram, maka bentuk diagramnya akan menjadi seperti berikut:
Untuk penulisan query dari operasi ini adalah sebagai berikut:
Pada contoh query di atas, kita akan menggabungkan tabel unified_orders dengan tabel customer_info. Data yang akan kita tampilkan adalah customer_id dan customer_name dari tabel customer_info, dan transaction_date dan transaction_value dari tabel unified_orders.
Dengan tipe JOIN tersebut, kita akan mengeluarkan semua data pada tabel unified_orders dan tabel customer_info berdasarkan kolom referensi customer_id nya. Apabila ada data customer_id yang tidak sama dengan data customer_id pada tabel lainnya, maka keluaran data pada kolom yang dipanggil akan menjadi NULL.
Contoh penulisan query di atas berguna apabila kita ingin menampilkan seluruh informasi menjadi satu, ataupun untuk membandingkan dua tabel yang berkaitan secara sekaligus.
Penutup
Operasi JOIN ini sangat berguna apabila kita ingin menggabungkan dua atau lebih tabel menjadi satu. Selain 4 jenis JOIN yang telah dijelaskan, masih banyak bentuk JOIN lainnya seperti FULL JOIN dan CROSS JOIN.
Dikarenakan operasi JOIN ini menggabungkan dua atau lebih tabel, perlu diperhatikan bahwa ukuran tabel keluaran akan membesar, dan dapat menyebabkan waktu komputasi yang semakin lama karena jumlah data bertambah.
Oleh karena itu, kita bisa menggabungkan operasi JOIN ini dengan operasi INDEX, yang berfungsi untuk mempercepat waktu komputasi SQL. Selain itu kita juga bisa menambahkan klausa WHERE sebagai kondisi untuk mengurangi jumlah keluaran data.
Perlu diperhatikan juga, apabila ada nilai yang duplikat pada kolom yang digunakan sebagai referensi, ada kemungkinan SQL akan mengeluarkan data yang duplikat untuk tiap keluaran. Oleh karena itu, kita bisa menambahkan klausa DISTINCT untuk mengurangi jumlah data duplikat.
Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!
Rasakan pengalaman belajar di RevoU Full-Stack Program: Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion. Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)
Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!
Rasakan pengalaman belajar di RevoU Full-Stack Program: Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion. Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)
Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!
Rasakan pengalaman belajar di RevoU Full-Stack Program: Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion. Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)