Join merupakan salah satu fitur SQL yang berguna menggabungkan tabel dengan queryquery-
query yang mendapatkan kembali data. Join adalah salah satu dari beberapa operasi paling
penting yang dapat Anda lakukan dengan menggunakan statemen SELECT. Dan sebagai
bagian penting dalam mempelajari SQL, Anda perlu memahami dengan baik join dan sintaks
join.
Alasan utama digunakannya pemisahan data ke dalam banyak tabel memungkinkan proses
pemyimpanannan menjadi lebih efesien, manipulasi lebih mudah dan skalabilitas yang lebih
besar. Tetapi manfaat tersebut ada tuntutan.
Jika data disimpan dalam banyak tabel, bagaimana kalian dapat mendapatkan kembali data
dengan sebuah statemen SELECT tunggal ?
Untuk membuat join sangat sederhana. Anda harus menentukan semua tabel yang akan
dimasukkan dan bagaimana tabel itu dihubungkan satu dengan yang
lainnya.
Sebelum mencoba seperti apa join itu, ada beberapa tabel yang harus dipersiapkan.
Buat database PRAKTIKUM_JOIN
create database praktikum_join
ikum_join;
use praktikum_join;
1. INNER JOIN
Inner Join adalah menggabungkan dua tabel untuk mengambil irisan dari kedua tabel tersebut,
atau mengambil kesamaannya. Inner join dapat diilustrasikan sebagai berikut.
ON nama_tabel1.nama_field = nama_tabel2.nama_field;
Atau
SELECT nama_field FROM nama_tabel1 JOIN nama_tabel2
ON nama_tabel1.nama_field = nama_tabel2.nama_field;
Atau
SELECT anggota_koperasi.id_anggota, nama_anggota, status_anggota, asal
FROM anggota_koperasi JOIN rekap
ON anggota_koperasi.id_anggota = rekap.id_anggota;
Jika diantara dua tabel tersebut tidak memiliki irisan maka tidak ada yang ditampilkan, (Empty
set (0.00 sec))
Contoh:
SELECT anggota_koperasi.id_anggota, nama_anggota, status_anggota, asal
FROM anggota_koperasi INNER JOIN rekap
On anggota_koperasi.id_anggota = rekap.id_rekap;
rekap.id_
Atau
SELECT anggota_koperasi.id_anggota, nama_anggota, status_anggota, asal
FROM anggota_koperasi INNER JOIN rekap;
Data yang ditampilkan tidak memiliki tujuan yang jelas.
Sekarang coba
oba tampilkan id_anggota dari tabel anggota_koperasi, id_pengurus dari tabe
tabel
pengurus, dan id_rekap dari tabel rekap dengan menggunakan inner join
join. Apakah bisa
menggabungkan 3 tabel dan mencari irisannya?
2. LEFT JOIN
Left join, adalah query untuk menampilkan record dari tabel kiri walaupun tidak mempunyai
pasangan record pada tabel kanan. Left join dapat diilustrasikan seperti gambar berikut.
Bentuk penulisan sintaksnya:
SELECT table1.field1, table2.field1, table2.field1, table2.field2
FROM table1 LEFT JOIN table2
ON table1.field1=table2.field1;
Contoh:
Sekarang kita coba delete data rekap yang diurus oleh Squidward Tentacles
Data dimana pengurusnya tidak terdapat pada tabel rekap (tidak memiliki irisan), maka
akan ditampilkan null.
Oke, sekarang kita berikan sedikit variasi pada sintaks tersebut untuk menampilkan data
pada tabel kiri dengan syarat field pada tabel kanan pasangannya NULL NULL. Sintaksnya:
sebagai berikut.
SELECT rekap.id_rekap, pengurus.nama_pengurus, pengurus.jabatan,
rekap.jenis_transaksi, rekap.besaran
FROM pengurus LEFT JOIN rekap
ON pengurus.id_pengurus=rekap.id_pengurus
WHERE rekap.id_pengurus IS NULL ORDER BY rekap.id_rekap;
Maka akan ditampilkan data yang tidak meiliki irisan.
Karena pada penggabungan tabel pengurus dan tabel rekap, tidak ada id_pengurus pada tabel
pengurus yang NULL atau tidak ada field pada rekap yang tidak memiliki relasi dengan
id_pengurus pada tabel pengurus. Bisakan anda membuat contoh yang NULL?
Maka data yang akan ditampilkan adalah hanya data yang memiliki irisan.
Nah, bagaimana kalau kasusnya seperti berikut?
3. RIGHT JOIN
Query ini merupakan kebalikan dari Left Join. Dalam Left Join table kanan yang tidak
memiliki irisan dengan table kiri, akan bernilai NULL dengan semua data dari table kiri
akan ditampilkan. Sedangkan dalam Right Join table kiri yang tidak memiliki irisan
dengan table kanan, akan bernilai NULL dengan semua data dari table kanan akan
ditampilkan. Ilustrasi gambar sebagai berikut:
Right Join juga memiliki fungsi yang sama dengan Left Join, dimana kamu bisa
menampilkan data table kanan dengan syarat table kiri NULL. Sintaksnya sebagai
berikut:
SELECT rekap.id_rekap, pengurus.nama_pengurus, pengurus.jabatan,
rekap.jenis_transaksi, rekap.besaran
FROM rekap RIGHT JOIN pengurus
ON pengurus.id_pengurus=rekap.id_pengurus
WHERE rekap.id_pengurus IS NULL
ORDER BY rekap.id_rekap;
Jika kamu ingin menampilkan data table kanan dengan syarat data table kiri NOT NULL.
Sintaksnya sebagai berikut:
SELECT rekap.id_rekap, pengurus.nama_pengurus, pengurus.jabatan,
rekap.jenis_transaksi, rekap.besaran
FROM rekap RIGHT JOIN pengurus
ON pengurus.id_pengurus=rekap.id_pengurus
WHERE rekap.id_pengurus IS NOT NULL
ORDER BY rekap.id_rekap;
Coba cek dengan contoh kedua right join di atas,, apakah ada kesamaan?
Kesimpulan
Inner Join hasilnya akan sama dengan Left Join yang table kanannya NOT NULL dan
Right Join yang table kirinya NOT NULL. Mengapa demikian? Mari Berimajinasi!
Left Join dengan table kanan yang NOT NULL berarti akan menampilkan yang hanya
memiliki irisan. Benar?
Dan Right Join dengan table kiri NOT NULL berarti akan menampilkan yang hanya
memiliki irisan juga. Inner Join juga menampilkan yang hanya memiliki irisan
diantara table.
Dengan kata lain Left Join dengan table kanan NOT NULL dan Right Join dengan
table kiri yang NOT NULL akan sama dengan Inner Join.
NB :
Bila ingin menampilkan semua data yang ada di tabel sebelah kiri baik yang
mempunyai pasangan ataupun yang tidak mempunyai pasangan dengan data pada
tabel di sebelah kanan, maka gunakan left join.
Sedangkan bila yang terjadi adalah kebalikannya, yaitu ingin menampilkan
semua data yang ada di sebelah kanan baik yang mempunyai pasangan ataupun
yang tidak mempunyai pasangan dengan data pada tabel di sebelah kiri, maka
gunakan right join.
join
Referensi
Modul #4 Join Praktikum Basis Data 2013