🧚 Dengar! Beekeeper Studio adalah GUI database yang cepat, modern, dan open source Unduh
2 Januari 2024 Oleh Matthew Rathbone

Memahami SQL sering kali soal mengajukan pertanyaan yang tepat. Saat Anda berurusan dengan data yang tersebar di beberapa tabel, operasi full outer join jelas sangat berguna. Meskipun cukup umum di beberapa sistem manajemen database, konsep FULL OUTER JOIN sedikit lebih rumit di MySQL. Kenapa? Karena MySQL tidak mendukungnya secara bawaan. Menarik, bukan? Tapi tunggu, ada solusinya!

Dalam tutorial ini, kita akan membahas secara mendetail cara mengimplementasikan full outer join di MySQL. Bersiaplah, teman-teman. Kita akan menyelami banyak contoh kode.

🔖 Referensi Cepat: Butuh rujukan cepat untuk semua jenis JOIN? Lihat SQL JOIN Cheat Sheet kami yang dilengkapi diagram visual dan contoh kode.

Apa itu Full Outer Join?

Sebelum mulai, mari kita definisikan apa itu FULL OUTER JOIN. Di SQL, full outer join menggabungkan efek dari left outer join dan right outer join sekaligus. Dengan kata lain, operasi ini mengambil record yang memiliki nilai cocok di kedua tabel, serta semua record dari kedua tabel yang nilainya tidak muncul di tabel lainnya.

Visualisasi Full Outer Join

Berikut contohnya. Misalkan kita punya dua tabel, Employees dan Departments.

Tabel Employees:

id name
1 Alice
2 Bob
3 Charlie

Tabel Departments:

id department
2 HR
3 IT
4 Marketing

Menggunakan query FULL OUTER JOIN:

SELECT * FROM Employees
FULL OUTER JOIN Departments ON Employees.id = Departments.id;

Hasilnya adalah:

Employees.id Employees.name Departments.id Departments.department
1 Alice NULL NULL
2 Bob 2 HR
3 Charlie 3 IT
NULL NULL 4 Marketing

Output ini menggabungkan semua record dari Employees dan Departments. Isinya mencakup:

  • Record dengan nilai id yang cocok di kedua tabel (Bob dan Charlie).
  • Record dari Employees yang tidak punya pasangan di Departments (Alice).
  • Record dari Departments yang tidak punya pasangan di Employees (Marketing).

Meski sangat berguna, sintaks ini tidak didukung langsung di MySQL. Jadi, apa solusinya? Mari kita cari tahu.

Menyimulasikan Full Outer Join di MySQL

Seperti disebutkan di atas, MySQL tidak secara eksplisit mendukung keyword FULL OUTER JOIN. Namun, kita tetap bisa mendapatkan output yang diinginkan dengan mengombinasikan LEFT JOIN dan UNION

Ide untuk menyimulasikan full outer join di MySQL terdiri dari dua langkah:

  • Lakukan LEFT JOIN pada tabel pertama untuk mengambil semua record dari tabel pertama, beserta record yang cocok dari tabel kedua.
  • Gunakan UNION untuk menggabungkan hasilnya dengan hasil RIGHT JOIN guna mengambil semua record dari tabel kedua beserta record yang cocok dari tabel pertama.

Berikut cara kerja masing-masing komponen:

Left Join:
Visualisasi Left Join

Right Join:
Visualisasi Right Join

Contoh Full Outer Join di MySQL

Berikut contoh solusinya menggunakan data yang sama seperti sebelumnya

SELECT 
    Employees.id AS Employees_id, 
    Employees.name, 
    Departments.id AS Departments_id, 
    Departments.department
FROM 
    Employees
LEFT JOIN 
    Departments ON Employees.id = Departments.id

UNION

SELECT 
    Employees.id AS Employees_id, 
    Employees.name, 
    Departments.id AS Departments_id, 
    Departments.department
FROM 
    Departments
RIGHT JOIN 
    Employees ON Departments.id = Employees.id;

Query ini terdiri dari dua bagian:

  1. LEFT JOIN untuk mengambil semua record dari tabel Employees dan record yang cocok dari tabel Departments.
  2. RIGHT JOIN untuk mengambil semua record dari tabel Departments dan record yang cocok dari tabel Employees.

UNION menggabungkan hasil kedua query ini sekaligus menghapus baris duplikat.

Dengan tabel contoh yang sama, hasilnya adalah:

Employees_id name Departments_id department
1 Alice NULL NULL
2 Bob 2 HR
3 Charlie 3 IT
NULL NULL 4 Marketing

Output ini, seperti FULL OUTER JOIN di SQL, menggabungkan semua record dari Employees dan Departments.

UNION Menyaring Duplikat Secara Otomatis

Dalam kasus contoh kita dengan tabel Employees dan Departments, UNION yang digunakan dalam solusi MySQL untuk FULL OUTER JOIN tidak akan menghasilkan duplikat. Ini karena operator UNION secara otomatis menghapus baris duplikat dari hasilnya.

Untuk memperjelas, mari kita lihat cara kerja UNION dalam konteks ini:

  • Bagian pertama query (LEFT JOIN) mengambil semua record dari tabel Employees dan record yang cocok dari tabel Departments. Ini mencakup baris dengan nilai id yang cocok di kedua tabel serta baris dari Employees yang tidak punya pasangan di Departments.

  • Bagian kedua query (RIGHT JOIN) mengambil semua record dari tabel Departments dan record yang cocok dari tabel Employees. Ini mencakup baris dengan nilai id yang cocok di kedua tabel serta baris dari Departments yang tidak punya pasangan di Employees.

Karena UNION menghapus duplikat, baris dengan nilai id yang cocok (yang muncul di hasil LEFT JOIN maupun RIGHT JOIN) hanya akan muncul sekali di hasil akhir.

Singkatnya, menggunakan UNION dalam konteks ini memastikan setiap kombinasi unik data Employees dan Departments hanya muncul sekali di hasil, sehingga meniru perilaku FULL OUTER JOIN tanpa duplikat.

Berlatih di Beekeeper Studio

Semoga tutorial full outer join MySQL ini bermanfaat bagi Anda. Di postingan berikutnya, kita akan terus menjelajahi fitur MySQL tingkat lanjut lainnya, berbagi lebih banyak contoh kode, dan membahas lebih dalam mengapa dan bagaimana fitur-fitur tersebut bekerja. Sampai saat itu, terus asah kemampuan SQL Anda, idealnya dengan menggunakan Beekeeper Studio.

Beekeeper Studio Adalah GUI Database Gratis & Open Source

Tool query & editor SQL terbaik yang pernah saya pakai. Semua yang saya butuhkan untuk mengelola database ada di sini. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio cepat, intuitif, dan mudah digunakan. Beekeeper mendukung banyak sekali database, dan berjalan mulus di Windows, Mac, dan Linux.

Versi Linux Beekeeper punya fitur 100% lengkap, tanpa potong kompas, tanpa kompromi fitur.

Apa Kata Pengguna Tentang Beekeeper Studio

★★★★★
"Beekeeper Studio sepenuhnya menggantikan workflow SQL lama saya. Cepat, intuitif, dan membuat pekerjaan database kembali menyenangkan."
— Alex K., Database Developer
★★★★★
"Saya sudah mencoba banyak GUI database, tapi Beekeeper punya keseimbangan sempurna antara fitur dan kesederhanaan. Langsung berfungsi."
— Sarah M., Full Stack Engineer

Siap Meningkatkan Workflow SQL Anda?

download Unduh Gratis