Memahami SQL Join dengan Diagram Venn
Query JOIN
pada bahasa SQL berfungsi untuk menggabungkan data dari 2 atau lebih tabel dalam sebuah database. Syntax SQL mempunyai 4 tipe JOIN
, yaitu: INNER
, OUTER
, LEFT
, dan RIGHT
.
Diagram Venn adalah diagram yang menunjukan semua kemungkinan relasi logis antara sekelompok variabel yang berbeda. Di sekolah dasar, Diagram Venn dikenalkan pada saat mempelajari teori himpunan pada Matematika. Diagram Venn biasanya dilambangkan dengan 2 atau lebih lingkaran yang saling berpotongan (meskipun tidak harus selalu demikian).
Misalkan kita mempunyai 2 buah tabel pada database, TabelA dan TabelB. TabelA di sebelah kiri dan TabelB di sebelah kanan. Kemudian kita akan mengisi masing-masing dengan 4 buah data.
id nama id nama -- ---- -- ---- 1 Andik 1 Andik 2 Binta 2 Bambi 3 Carli 3 Conan 4 Didut 4 Didut
Sekarang kita coba gabungkan kedua tabel di atas menggunakan tipe-tipe JOIN
yang ada.
1. INNER JOIN
SELECT * FROM TabelA INNER JOIN TabelB ON TabelA.nama = TabelB.nama id nama id nama -- ---- -- ---- 1 Andik 1 Andik 4 Didut 4 Didut
INNER JOIN
hanya akan menampilkan data yang cocok satu sama lain (berpasangan) pada kedua tabel. Diagram Venn-nya adalah sebagai berikut.
2. OUTER JOIN
Pada dasarnya OUTER JOIN
dibagi menjadi 3, FULL OUTER JOIN
, LEFT OUTER JOIN
, dan RIGHT OUTER JOIN
.
2.a. FULL OUTER JOIN
SELECT * FROM TabelA FULL OUTER JOIN TabelB ON TabelA.nama = TabelB.nama id nama id nama -- ---- -- ---- 1 Andik 1 Andik 2 Binta null null 3 Carli null null 4 Didut 4 Didut null null 2 Bambi null null 3 Conan
FULL OUTER JOIN
menghasilkan semua data yang ditemukan dan cocok satu sama lain pada kedua tabel, jika ada yang tidak cocok, bagian yang tidak ada tersebut akan berisi null
. Jadi bisa dikatakan FULL OUTER JOIN
ini akan menampilkan semua data yang ada di kedua tabel termasuk yang tidak cocok satu sama lain. Diagram Venn-nya adalah sebagai berikut.
2.b. LEFT OUTER JOIN
SELECT * FROM TabelA LEFT OUTER JOIN TabelB ON TabelA.nama = TabelB.nama id nama id nama -- ---- -- ---- 1 Andik 1 Andik 2 Binta null null 3 Carli null null 4 Didut 4 Didut
LEFT OUTER JOIN
menghasilkan semua data yang ada pada TabelA (tabel sebelah kiri), dengan pasangannya (jika ada) pada TabelB (tabel sebelah kanan). Jika pasangannya tidak ditemukan, tabel sebelah kanan akan berisi null
. Diagram Venn-nya adalah sebagai berikut.
Lalu bagaimana jika kita menginginkan data yang hanya ada pada TabelA (tabel sebelah kiri)? Untuk itu kita membutuhkan bantuan klausa WHERE
.
2.c. LEFT OUTER JOIN
dengan klausa WHERE
SELECT * FROM TabelA LEFT OUTER JOIN TabelB ON TabelA.nama = TabelB.nama WHERE TabelB.id IS null id nama id nama -- ---- -- ---- 2 Binta null null 3 Carli null null
Query LEFT OUTER JOIN
di atas menghasilkan data yang hanya ada pada TabelA (tabel sebelah kiri). Diagram Venn-nya adalah sebagai berikut.
Untuk tipe RIGHT OUTER JOIN
tidak perlu dijelaskan lagi karena hasilnya hanya kebalikan dari LEFT OUTER JOIN
. Terakhir, ada satu bentuk diagram lagi, yaitu jika yang diinginkan hanya data yang tidak memiliki pasangan satu sama lain, alias data tersebut berada di luar bagian yang berpotongan.
2.d. FULL OUTER JOIN
dengan klausa WHERE
SELECT * FROM TabelA FULL OUTER JOIN TabelB ON TabelA.nama = TabelB.nama WHERE TabelA.id IS null OR TabelB.id IS null id nama id nama -- ---- -- ---- 2 Binta null null 3 Carli null null null null 2 Bambi null null 3 Conan
Query FULL OUTER JOIN
di atas menghasilkan data yang unik (tidak ada yang berpasangan) dari TabelA dan TabelB. Diagram Venn-nya adalah sebagai berikut.
Artikel ini merupakan terjemahan bebas dari artikel yang ditulis oleh Jeff Atwood dengan ditambah penjelasan seperlunya.
Pingback: Perbedaan Left Join dan Left Outer Join | Sibudi </>