Malam ini saya ingin berbagi ilmu mengenai JOIN. Apa itu JOIN? JOIN merupakan salah satu operasi untuk menghubungkan dua atau lebih tabel yang saling berelasi (walaupun dalam prakteknya kita dapat menghubungkan tabel-tabel yang tidak berelasi sama sekali). Operasi JOIN yang akan saya bahas pada tulisan ini terbatas pada operasi JOIN dalam SQL Server. JOIN sendiri memiliki berbagai jenis, diantaranya : JOIN, INNER JOIN, LEFT JOIN, LEFT OUTER JOIN, RIGHT JOIN, RIGHT OUTER JOIN, CROSS JOIN, dan JOIN dengan koma. Akan saya bahas satu-persatu jenis-jenis JOIN tersebut. Dalam setiap penjelasan, saya berikan contoh untuk mempermudah pemahaman. Oleh karena itu, pertama kita siapkan dua buah tabel sebagai contoh dengan nama tabel barang dan tabel gudang (saya anggap SQL Server sudah terinstal di kompiter). Berikut script create tabelnya :
– Tabel barang :
Isi kedua tabel dengan data-data berikut :
Untuk barang yang kode_gudang nya NULL kita anggap barang tersebut belum disimpan di dalam gudang manapun.
Pada setiap contoh, akan saya jadikan tabel barang berada di sebelah kiri hasil dan tabel gudang berada di sebelah kanan hasil.
1. JOIN / INNER JOIN
JOIN / INNER JOIN merupakan jenis JOIN yang digunakan untuk mendapatkan data dari dua tabel atau lebih yang persis saling berelasi. Kalau kita gambarkan dengan diagram, hasil dari JOIN dengan menggunakan JOIN / INNER JOIN merupakan irisan dari relasi antar tabel.
Contoh kasus :
Seorang pegawai ingin melihat semua data barang beserta nama gudangnya dengan catatan barang tersebut telah berada dalam gudang.
Maka script yang harus kita gunakan dalam kasus ini yaitu menggunakan script JOIN / INNER JOIN.
Berikut script JOIN :
atau menggunakan INNER JOIN :
Hasilnya :
2. LEFT JOIN / LEFT OUTER JOIN
LEFT JOIN / LEFT OUTER JOIN merupakan jenis JOIN yang digunakan untuk mendapatkan data dari dua tabel atau lebih dimana data di tabel sebelah kiri ditampilkan semua baik yang berelasi dengan data di tabel sebelah kanan maupun tidak. Kalau kita gambarkan dengan diagram, hasil dari JOIN dengan menggunakan LEFT JOIN / LEFT OUTER JOIN seperti berikut :
Contoh kasus :
Seorang pegawai ingin melihat semua data barang beserta nama gudangnya baik barang itu sudah berada dalam gudang maupun belum berada dalam gudang.
Maka script yang harus kita gunakan dalam kasus ini yaitu menggunakan script LEFT JOIN / LEFT OUTER JOIN.
Berikut script LEFT JOIN :
atau menggunakan LEFT OUTER JOIN :
Hasilnya :
Dari hasil kita dapat lihat bahwa data barang yang tidak berelasi dengan data gudang tetap ditampilkan, namun data di sebelah kanan (data gudang) diisi dengan NULL.
3. RIGHT JOIN / RIGHT OUTER JOIN
RIGHT JOIN / RIGHT OUTER JOIN merupakan jenis JOIN yang digunakan untuk mendapatkan data dari dua tabel atau lebih dimana data di tabel sebelah kanan ditampilkan semua baik yang berelasi dengan data di tabel sebelah kiri maupun tidak. Kalau kita gambarkan dengan diagram, hasil dari JOIN dengan menggunakan RIGHT JOIN / RIGHT OUTER JOIN seperti berikut :
Contoh kasus :
Seorang pegawai ingin melihat semua data barang beserta nama gudangnya dengan catatan gudang yang tidak berisi barangpun tetap ditampilkan.
Maka script yang harus kita gunakan dalam kasus ini yaitu menggunakan script RIGHT JOIN / RIGHT OUTER JOIN.
Berikut script RIGHT JOIN :
atau menggunakan RIGHT OUTER JOIN :
Hasilnya :
Dari hasil kita dapat lihat bahwa data gudang yang tidak berelasi dengan data barang tetap ditampilkan, namun data di sebelah kiri (data barang) diisi dengan NULL.
4. CROSS JOIN
CROSS JOIN merupakan jenis JOIN yang digunakan untuk mendapatkan data kombinasi dari dua tabel atau lebih. Misalkan, n = jumlah baris data pada tabel di sebelah kiri, dan m = jumlah baris data pada tabel di sebelah kanan. Maka hasil jumlah baris dari CROSS JOIN adalah n X m baris data.
Contoh kasus :
Seorang pegawai ingin melihat semua kombinasi data barang yang dapat disimpan ke dalam gudang.
Maka script yang harus kita gunakan dalam kasus ini yaitu menggunakan script CROSS JOIN.
Berikut script CROSS JOIN :
Hasilnya :
Di sini kita hasil menggunakan CROSS JOIN yaitu kombinasi antara tabel barang dengan tabel gudang dengan jumlah baris hasilnya 39. Dimana jumlah baris data barang adalah 13 data dan jumlah baris data gudang adalah 3 data. 39 = 13 X 3
5. JOIN dengan koma
Selain menggunakan operator JOIN, kita juga dapat melakukan JOIN antar tabel dengan menggunakan koma. Bila kita tidak menambahkan kondisi relasi dengan menggunakan WHERE, maka JOIN dengan koma akan menghasilkan data yang sama apabila kita menggunakan CROSS JOIN. Misal dengan script berikut :
Maka akan menghasilkan data kombinasi seperti berikut :
Namun, apabila kita menambahkan kondisi dengan merelasikan kolom yang berelasi menggunakan WHERE saat JOIN dengan koma. Maka hasilnya seperti kita menggunakan JOIN / INNER JOIN.
Misal dengan script berikut :
Maka hasilnya seperti berikut :
Dengan kata lain, menggunakan koma merupakan alternatif lain dari JOIN pada SQL Server.
Penggunaan operator JOIN mana yang kita gunakan tergantung dari keperluan data yang diinginkan.