Cara Menggunakan JOIN di SQL dan Perbedaannya
Saat kamu belajar SQL, tidak akan lengkap jika kamu tidak mengerti tentang JOIN. Perintah JOIN sangat penting karena kamu bisa menggabungkan data dari dua atau lebih tabel menjadi satu. Terdapat beberapa jenis perintah JOIN di SQL yang dapat kamu gunakan. Apa perbedaan masing-masing perintah JOIN di SQL tersebut?
SQL JOIN
SQL JOIN adalah salah satu perintah di dalam SQL. Perintah JOIN ini digunakan untuk menggabungkan data dari dua atau lebih tabel sehingga menjadi satu. Untuk dapat melakukan perintah JOIN syaratnya adalah terdapat kolom yang mempunyai hubungan diantara tabel-tabel tersebut.
Contohnya, kamu memiliki tabel user
dan tabel order
. Tabel user
dapat di lakukan JOIN terhadap tabel order
karena pada tabel order
ada kolom user_id
yang berhubungan dengan kolom id
pada table user
. Silakan lihat gambaran kedua tabel tersebut di bawah ini.
Kapan SQL JOIN Digunakan
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
Pada umumnya, terdapat empat jenis JOIN di SQL yakni:
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL JOIN
Masing-masing JOIN ini memiliki kegunaan dan perbedaannya di dalam SQL.
Perbedaan Jenis JOIN SQL
Masing-masing JOIN memiliki kegunaannya sendiri-sendiri. Berikut merupakan perbedaan dan penjelasan untuk masing-masing JOIN yang ada di SQL.
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,
SELECT user.name, order.total
FROM order
INNER JOIN user
ON user.id = order.user_id;
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 |
Berikut gambarannya pada diagram Venn.
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
.
Contoh menggunakan perintah SQL berikut ini,
SELECT user.name, order.total
FROM order
LEFT JOIN user
ON user.id = order.user_id;
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 |
Berikut gambarannya pada diagram Venn.
RIGHT JOIN
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,
SELECT user.name, order.total
FROM order
RIGHT JOIN user
ON user.id = order.user_id;
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 |
Berikut gambarannya pada diagram Venn.
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,
SELECT user.name, order.total
FROM order
FULL OUTER JOIN user
ON user.id = order.user_id;
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 |
--------+----------+
Anto | NULL |
Alam | 50000 |
Alam | 76000 |
Budi | 10000 |
Kris | 500 |
NULL | 99999 |
Berikut gambarannya pada diagram Venn.
Rangkuman
Berikut adalah diagram Venn untuk keempat jenis JOIN di atas.
Bagikan di
Kolom Diskusi