Hola mentemen! pada kesempatan kali ini, mimin ingin membahas tentang “Full Outer Join” dalam konteks pengolahan database. Full outer join adalah salah satu jenis operasi penggabungan tabel yang sangat berguna untuk menggabungkan dua tabel atau lebih yang memiliki relasi yang saling beririsan.
Melalui blog ini, mimin akan membahas konsep full outer join secara rinci, menjelaskan cara kerjanya, menggunakan full outer join di MySQL dan memberikan contoh penggunaannya. Semoga blog ini bermanfaat bagi Anda dan dapat membantu Anda memahami konsep full outer join dengan lebih baik. Ikuzoooo!
Pengertian Full Outer Join
Full Outer Join adalah salah satu jenis join dalam database yang digunakan untuk menggabungkan dua tabel atau lebih yang menghasilkan gabungan data dari kedua tabel, termasuk data yang tidak memiliki pasangan atau data yang tidak cocok di antara kedua tabel.
Dalam melakukan Full Outer Join, data dari kedua tabel akan dipertahankan. Jika ada data yang tidak memiliki pasangan di tabel lain, data tersebut tetap ditampilkan. Hal ini berbeda dengan jenis join lainnya, seperti Inner Join, dimana hanya data yang memiliki pasangan di kedua tabel yang ditampilkan.
Cara kerja Full Outer Join
Cara kerja Full Outer Join adalah dengan menggabungkan data dari kedua tabel, kemudian mencocokkan setiap baris dengan nilai yang sama. Jika ada nilai yang tidak cocok, data tersebut akan ditampilkan dalam hasil Full Outer Join. Dalam hal ini, data yang tidak memiliki pasangan di salah satu tabel tetap ditampilkan dan diisi dengan nilai NULL.
Apakah MySQL mendukung Full Outer Join?
MySQL adalah salah satu sistem manajemen basis data relasional (RDBMS) yang paling populer di dunia dan digunakan oleh berbagai jenis aplikasi. Meskipun MySQL mendukung berbagai jenis join seperti Inner Join, Left Join, Right Join, dan Cross Join, sayangnya MySQL tidak mendukung Full Outer Join secara langsung.
Hal ini berbeda dengan sistem manajemen basis data relasional lainnya seperti SQL Server, Oracle, PostgreSQL, dan DB2 yang mendukung Full Outer Join secara langsung. Oleh karena itu, untuk melakukan Full Outer Join pada MySQL, kita perlu menggunakan teknik penggabungan (union) dari dua join jenis lainnya, yaitu Left Join dan Right Join.
Cara melakukan Full Outer Join pada MySQL dengan teknik penggabungan adalah dengan menggabungkan dua select statement, satu menggunakan Left Join dan satunya menggunakan Right Join. Setelah itu, kita perlu menggabungkan hasil dari kedua statement tersebut menggunakan operator UNION atau UNION ALL.
Contoh penggunaan Full Outer Join di MySQL
Seperti yang sebelumnya dijelaskan, MySQL tidak mendukung full outer join secara langsung makanya kita kita perlu menggunakan teknik penggabungan (union) dari dua join jenis lainnya, yaitu Left Join dan Right Join.
Misalnya, disini kita memiliki table siswa dan table nilai_siswa:
Tabel siswa:
id_siswa | nama | kelas |
---|---|---|
1 | Ahmad | 10A |
2 | Budi | 10B |
3 | Cindy | 10C |
4 | Denny | 10A |
5 | Eva | 10B |
6 | Farida | 10C |
Tabel nilai_siswa :
id_siswa | matematika | fisika | biologi |
---|---|---|---|
1 | 80 | 85 | 90 |
2 | 75 | 70 | 80 |
3 | 90 | 95 | 85 |
4 | 85 | 80 | 75 |
5 | 70 | 75 | 90 |
7 | 90 | 90 | 90 |
Untuk menggabungkan data dari kedua tabel dengan FULL OUTER JOIN
, kita dapat menggunakan teknik UNION
dari LEFT JOIN
dan RIGHT JOIN
. Berikut ini adalah contoh SQL untuk melakukan operasi FULL OUTER JOIN
:
SELECT siswa.id_siswa, siswa.nama, siswa.kelas, nilai_siswa.matematika, nilai_siswa.fisika, nilai_siswa.biologi
FROM siswa
LEFT JOIN nilai_siswa ON siswa.id_siswa = nilai_siswa.id_siswa
UNION
SELECT siswa.id_siswa, siswa.nama, siswa.kelas, nilai_siswa.matematika, nilai_siswa.fisika, nilai_siswa.biologi
FROM siswa
RIGHT JOIN nilai_siswa ON siswa.id_siswa = nilai_siswa.id_siswa
WHERE siswa.id_siswa IS NULL;
Berikut adalah penjelasan mengenai query di atas:
- Pertama, kita menggunakan
LEFT JOIN
untuk menggabungkan data dari tabelsiswa
dan tabelnilai_siswa
berdasarkanid_siswa
. - Kemudian, kita menggunakan
UNION
untuk menggabungkan hasil dariLEFT JOIN
dengan hasil dariRIGHT JOIN
. - Pada
RIGHT JOIN
, kita menambahkanWHERE
clause untuk mengambil semua baris yang tidak memiliki pasangan di tabel siswa.
Hasilnya akan seperti ini:
id_siswa | nama | kelas | matematika | fisika | biologi |
---|---|---|---|---|---|
1 | Ahmad | 10A | 80 | 85 | 90 |
2 | Budi | 10B | 75 | 70 | 80 |
3 | Cindy | 10C | 90 | 95 | 85 |
4 | Denny | 10A | 4 | 85 | 80 |
5 | Eva | 10B | 5 | 70 | 75 |
6 | Farida | 10C | NULL | NULL | NULL |
NULL | NULL | NULL | 90 | 90 | 90 |
Dalam hasil di atas, kita dapat melihat bahwa semua baris dari kedua tabel telah digabungkan. Nilai matematika, fisika, dan biologi yang tidak memiliki pasangan di tabel siswa ditampilkan sebagai NULL
, sedangkan data siswa yang tidak memiliki pasangan di tabel nilai_siswa juga ditampilkan dengan nilai NULL
.