Dalam basis data relasional, data sering disimpan dalam beberapa tabel yang saling berhubungan.
Join Table adalah operasi SQL yang digunakan untuk menggabungkan data dari dua atau lebih tabel berdasarkan hubungan antar tabel tersebut.
Apa Itu Join?
Join adalah perintah SQL untuk mendapatkan data gabungan dari tabel-tabel yang memiliki hubungan. Operasi ini digunakan pada perintah SELECT untuk mendapatkan data yang lebih rinci dan relevan dari tabel-tabel yang saling terhubung melalui primary key dan foreign key.
Jenis-jenis Join
1. Cross Join
Cross Join menghasilkan kombinasi Cartesian dari semua baris di tabel yang digabungkan.
Setiap baris di tabel pertama dipasangkan dengan semua baris di tabel kedua.
Karakteristik : Tidak membutuhkan kondisi penghubung (ON). Jarang digunakan karena menghasilkan jumlah data yang besar dan tidak efisien.
Contoh Query :
SELECT employees.name, departments.name FROM employees CROSS JOIN departments;
Hasil : Jika tabel employees memiliki 3 baris dan tabel departments memiliki 2 baris, maka hasilnya adalah 6 kombinasi (3 x 2).
2. Inner Join
Inner Join hanya mengembalikan baris yang memiliki pasangan yang cocok di kedua tabel. Baris yang tidak memiliki pasangan akan diabaikan.
Karakteristik : Menggunakan kondisi penghubung (ON) untuk mencocokkan data antar tabel.
Contoh Query :
SELECT employees.name, departments.name FROM employees INNER JOIN departments ON employees.department_id = departments.id;
Hasil : Menampilkan data hanya jika department_id dari tabel employees cocok dengan id di tabel departments.
3. Outer Join
Outer Join menampilkan data meskipun salah satu tabel tidak memiliki pasangan.
Jenis Outer Join :
- Left Join : Mengembalikan semua baris dari tabel kiri (tabel pertama dalam query), dan baris yang cocok dari tabel kanan. Jika tidak ada pasangan di tabel kanan, kolom dari tabel kanan akan diisi dengan NULL.
Contoh Query :
SELECT employees.name, departments.name FROM employees LEFT JOIN departments ON employees.department_id = departments.id;
Hasil : Semua data dari tabel employees akan ditampilkan, meskipun tidak ada kecocokan di tabel departments.
- Right Join : Mengembalikan semua baris dari tabel kanan, dan baris yang cocok dari tabel kiri. Jika tidak ada pasangan di tabel kiri, kolom dari tabel kiri akan diisi dengan NULL.
Contoh Query :
SELECT employees.name, departments.name FROM employees RIGHT JOIN departments ON employees.department_id = departments.id;
Hasil : Semua data dari tabel departments akan ditampilkan, meskipun tidak ada kecocokan di tabel employees.
- Full Outer Join : Mengembalikan semua baris dari kedua tabel, baik yang memiliki pasangan maupun yang tidak. Baris yang tidak memiliki pasangan di salah satu tabel akan diisi dengan NULL pada kolom tabel yang tidak ada pasangannya.
Contoh Query :
SELECT employees.name, departments.name FROM employees FULL OUTER JOIN departments ON employees.department_id = departments.id;
Hasil : Menggabungkan hasil dari Left Join dan Right Join.
Studi Kasus
Tabel Employees
| ID | Name | Department_ID |
|---|---|---|
| 1 | Alice | 101 |
| 2 | Bob | NULL |
| 3 | Charlie | 102 |
Tabel Departments
| ID | Name |
|---|---|
| 101 | HR |
| 102 | IT |
| 103 | Marketing |
Cross Join : Menghasilkan 9 baris kombinasi.
Inner Join :
| Name | Department Name |
|---|---|
| Alice | HR |
| Charlie | IT |
Left Join :
| Name | Department Name |
|---|---|
| Alice | HR |
| Bob | NULL |
| Charlie | IT |
Right Join :
| Name | Department Name |
|---|---|
| Alice | HR |
| Charlie | IT |
| NULL | Marketing |
Full Outer Join :
| Name | Department Name |
|---|---|
| Alice | HR |
| Bob | NULL |
| Charlie | IT |
| NULL | Marketing |
Kesimpulan
Join adalah cara yang efisien untuk menggabungkan data dari beberapa tabel. Memilih jenis join tergantung pada kebutuhan data:
- Gunakan Inner Join untuk data yang memiliki pasangan.
- Gunakan Outer Join untuk memastikan semua data dari salah satu atau kedua tabel tetap ditampilkan.
- Hindari Cross Join kecuali benar-benar diperlukan.
