Professional Documents
Culture Documents
Join Tabel
Join Tabel
A. Materi Dasar
JOIN merupakan salah satu fungsi yang ada di SQL yang digunakan untuk penggabungan
table melalui kolom atau key tertentu dimana memiliki nilai terkait untuk mendapatkan satu
set data dengan informasi lengkap.
Pada bahasa SQL, operasi JOIN atau penggabungan antar table ini merupakan perintah
dasar yang sangat penting pada database relasional. Gunanya adalah untuk mendukung
perancangan database yang baik. Jika kita ingin menghasilkan output data yang valid,
menjamin integritas data dan meminimalisir duplikasi data.
Contoh penggunaan JOIN ketika kita ingin menggabungkan table User dan table Order.
Table User dapat dilakukan JOIN terhadap table Order karena pada table Order terdapat
kolom id yang berhubungan dengan kolom id pada table User. Berikut ilustrasinya.
JOIN di SQL digunakan pada saat kamu ingin menggabungkan data dari banyak tabel.
Biasanya, hal ini terjadi ketika data yang kamu perlukan berada di tabel yang berbeda-
beda.
Pada contoh tabel user dan tabel order di atas, kamu tidak mungkin menggabungkan tabel
tersebut pada database karena satu user dapat memiliki banyak order. Menggabungkan
kedua tabel itu di database membuat tabel tersebut tidak normalized yang merupakan hal
yang kurang baik pada database jenis relasional.
Karena kamu tidak bisa menggabungkannya sedari awal di database, kamu hanya dapat
menggabungkannya pada saat melakukan query. Hal inilah yang ingin dicapai dengan
menggunakan perintah JOIN di SQL. Agar, kamu dapat menggabungkan datamu yang
terpisah karena normalisasi tabel.
Jenis-jenis JOIN yang ada di SQL
INNER JOIN
LEFT JOIN
RIGHT JOIN
FULL JOIN
Untuk contoh pada masing-masing jenis JOIN, akan menggunakan data tabel berikut ini.
Tabel user:
id | name |
------+----------------+
1 | Anto |
2 | Alam |
3 | Budi |
4 | Kris |
Tabel order:
id | user_id | total |
------+----------+----------+
1 | 2 | 50000 |
2 | 2 | 76000 |
3 | 3 | 10000 |
4 | 4 | 500 |
5 | 10 | 99999 |
INNER JOIN
INNER JOIN mengambil data dimana kedua tabel memiliki data untuk syarat yang tertera
pada perintah ON. Misal perintah SQL berikut ini,
Pada perintah SQL di atas, hanya akan memunculkan data dari tabel order dan user yang
keduanya memiliki user_id pada order sama dengan id pada tabel user. Berikut ini adalah
hasil dari perintah SQL di atas.
name | total |
--------+----------+
Alam | 50000 |
Alam | 76000 |
Budi | 10000 |
Kris | 500 |
LEFT JOIN
Perintah LEFT JOIN akan mengambil semua data yang ada di tabel sebelah kiri dari
perintah LEFT JOIN, dan akan mencoba menggabungkannya dengan tabel kanan. Jika
tidak ada pasangannya, nilai dari table kiri tetap ada dan nilai yang tidak ada di tabel kanan
akan menjadi NULL.
Perintah SQL di atas, akan memunculkan seluruh data dari tabel order. Namun, hanya
beberapa data yang memenuhi syarat dari tabel user yang muncul. Berikut ini adalah hasil
dari perintah SQL di atas.
name | total |
--------+----------+
Anto | NULL |
Alam | 50000 |
Alam | 76000 |
Budi | 10000 |
Kris | 500 |
Berkebalikan dengan LEFT JOIN, perintah RIGHT JOIN akan mengambil semua data yang
ada di tabel sebelah kanan dari perintah RIGHT JOIN. Perintah ini akan mencoba
menggabungkannya dengan tabel yang ada di sebalah kiri. Jika tidak ada pasangannya,
nilai dari table kanan tetap ada dan nilai yang tidak ada di tabel kiri akan menjadi NULL.
Dengan contoh yang mirip dengan sebelumnya, inilah contoh RIGHT JOIN menggunakan
perintah SQL berikut ini,
Perintah SQL di atas, akan memunculkan seluruh data dari tabel user. Namun, hanya
beberapa data yang memenuhi syarat dari tabel order yang muncul. Berikut ini adalah hasil
dari perintah SQL di atas.
name | total |
--------+----------+
Alam | 50000 |
Alam | 76000 |
Budi | 10000 |
Kris | 500 |
NULL | 99999 |
FULL JOIN
Perintah FULL JOIN atau FULL OUTER JOIN akan mengambil semua data dari kedua
tabel. Perintah ini akan mencoba menggabungkan kedua data sesuai dengan syarat. Jika
tidak ada pasangannya, nilai akan dijadikan NULL.
Contoh penggunaan FULL JOIN menggunakan perintah SQL dapat dilihat di bawah ini,
name | total |
--------+----------+
Anto | NULL |
Alam | 50000 |
Alam | 76000 |
Budi | 10000 |
Kris | 500 |
NULL | 99999 |
B. Percobaan
SELECT
pegawai.idpeg,
pegawai.nama,
pegawai.namakel,
pegawai.jk,
pegawai.nocab,
cabang.nama as namacabang,
cabang.alamat as alamatcabang
FROM
pegawai
INNER JOIN cabang
ON
pegawai.nocab=cabang.nocab;
Hasil Percobaan 1:
Kolom dan data apa saja yang Tampil? Jika error tulis penyebab dan penyelesaiannya!
Percobaan 2:
SELECT
pegawai.idpeg,
pegawai.nama,
pegawai.namakel,
pegawai.jk,
pegawai.nocab,
cabang.nama as namacabang,
cabang.alamat as alamatcabang
FROM
pegawai
LEFT JOIN cabang
ON
pegawai.nocab=cabang.nocab;
Hasil Percobaan 2:
Kolom dan data apa saja yang Tampil? Jika error tulis penyebab dan penyelesaiannya!