Hai minna-san, apa kabar nih? Kali ini mimin mau bahas tentang salah satu topik yang sering bikin pusing para programmer, yaitu outer join! Tapi tenang aja, meskipun terdengar serius, sebenarnya konsep outer join ini bisa dijelasin dengan bahasa yang lebih mudah dipahami. Jadi, yuk kita bahas bareng-bareng tentang apa itu outer join, kenapa kita butuh outer join, perbedaan outer join dengan inner join dan bagaimana cara penerapannya dalam SQL. Siap-siap nambah ilmu ya!

Pengertian Outer Join

Outer join adalah jenis operasi penggabungan tabel dalam database yang menggabungkan dua tabel atau lebih berdasarkan kolom tertentu, namun tidak hanya mempertahankan baris yang cocok di kedua tabel, tetapi juga mempertahankan baris yang tidak cocok di salah satu atau kedua tabel.

Misalnya, jika kita memiliki dua kelompok teman, yaitu kelompok A dan kelompok B. Setiap anggota kelompok memiliki beberapa kegemaran yang mereka bagikan satu sama lain. Namun, beberapa teman dalam kelompok A mungkin tidak memiliki kegemaran yang sama dengan teman dalam kelompok B, dan sebaliknya.

Jika kita melakukan outer join pada kedua kelompok, kita akan mendapatkan daftar semua anggota di kedua kelompok beserta daftar kegemaran yang dimiliki oleh mereka, termasuk kegemaran yang tidak ada di kelompok lain. Dengan kata lain, outer join mempertahankan semua anggota di kedua kelompok, termasuk mereka yang tidak memiliki kesamaan dalam hal kegemaran.

Kenapa kita perlu Outer Join?

Kita memerlukan outer join ketika kita ingin menggabungkan dua tabel atau lebih dalam database, tetapi juga ingin mempertahankan semua baris dari salah satu atau kedua tabel bahkan jika tidak ada baris yang cocok dalam tabel lain.

Beberapa alasan mengapa kita perlu outer join antara lain:

  • Data yang tidak lengkap : Ketika kita memiliki data yang tidak lengkap di salah satu atau kedua tabel, kita mungkin tidak dapat menemukan kesesuaian dalam baris antara tabel tersebut. Namun, kita masih ingin mempertahankan data yang tersedia di setiap tabel. Oleh karena itu, outer join memungkinkan kita untuk mempertahankan baris di setiap tabel meskipun tidak ada kesesuaian dalam baris antara tabel.

  • Analisis data yang lebih lengkap : Outer join dapat membantu kita menganalisis data dengan lebih lengkap dan mendapatkan informasi yang lebih banyak. Kita dapat mempertahankan semua data yang tersedia dari setiap tabel dalam satu hasil penggabungan. Dengan demikian, kita dapat melihat data dengan lebih komprehensif dan membuat kesimpulan yang lebih akurat.

  • Menggabungkan data dari beberapa tabel : Ketika kita ingin menggabungkan data dari beberapa tabel yang tidak memiliki kesesuaian dalam baris, outer join adalah solusi yang tepat. Dengan menggunakan outer join, kita dapat menggabungkan semua data dari setiap tabel dalam satu hasil penggabungan.

Dalam banyak kasus, outer join sangat berguna ketika kita bekerja dengan data yang tidak lengkap atau ingin menganalisis data secara menyeluruh dari beberapa tabel yang tidak memiliki kesesuaian dalam baris.

Perbedaan Outer Join dengan Outer Join

Outer join dan inner join adalah dua jenis operasi penggabungan tabel dalam database. Perbedaan utama antara outer join dan inner join adalah sebagai berikut:

  1. Outer join mempertahankan semua baris dari salah satu atau kedua tabel, termasuk baris yang tidak cocok dalam tabel lain. Sedangkan inner join hanya mempertahankan baris yang cocok di kedua tabel yang dihubungkan.

  2. Outer join menghasilkan jumlah baris yang lebih banyak daripada inner join. Karena outer join mempertahankan semua baris dari tabel, bahkan jika tidak ada yang cocok dalam tabel lain, maka jumlah baris hasil penggabungan akan lebih banyak. Sedangkan inner join hanya menghasilkan baris yang cocok di kedua tabel, sehingga jumlah baris hasil penggabungan akan lebih sedikit.

  3. Outer join sering digunakan ketika kita ingin mempertahankan semua data dari tabel, bahkan jika tidak ada kesesuaian antara tabel. Sedangkan inner join digunakan ketika kita hanya ingin mempertahankan data yang memiliki kesesuaian dalam kedua tabel.

  4. Outer join dapat terbagi lagi menjadi left outer join, right outer join, dan full outer join, sementara inner join tidak memiliki jenis operasi tambahan.

Outer join dan inner join memiliki perbedaan yang signifikan dalam hal bagaimana mereka menggabungkan tabel dan mempertahankan baris dari tabel yang berbeda. Outer join mempertahankan semua baris dari tabel, bahkan jika tidak ada kesesuaian dengan tabel lain. Sedangkan inner join hanya mempertahankan baris yang cocok di kedua tabel. Pemilihan jenis operasi penggabungan yang tepat tergantung pada kebutuhan analisis data yang sedang dilakukan.

Contoh penggunaan Outer Join

Misalkan kita memiliki dua tabel dalam database, yaitu tabel students dan tabel courses. Tabel students berisi daftar mahasiswa beserta mata kuliah yang mereka ambil, sedangkan tabel courses berisi daftar mata kuliah yang ada beserta jumlah kreditnya.

Tabel students :

student_idnamecourse_id
1John Doe1
2Jane Doe2
3Bob SmithNULL
4Sarah Lee3
5Tom LeeNULL

Tabel courses :

course_idcourse_namecredits
1Math 1013
2Science 1014
3History 1013

Kita ingin menggabungkan kedua tabel ini untuk melihat daftar seluruh mahasiswa beserta mata kuliah yang mereka ambil, termasuk mahasiswa yang belum mengambil mata kuliah apa pun. Kita dapat menggunakan outer join untuk melakukan operasi penggabungan ini.

Contoh query outer join :

SELECT students.student_id, students.name, courses.course_name, courses.credits
FROM students
LEFT OUTER JOIN courses ON students.course_id = courses.course_id;

Query ini akan menghasilkan output tabel yang berisi daftar seluruh mahasiswa beserta mata kuliah yang mereka ambil, termasuk mahasiswa yang belum mengambil mata kuliah apa pun.

Output tabel akan memiliki empat kolom, yaitu student_id, name, course_name, dan credits. Kolom student_id dan name berasal dari tabel students, sementara kolom course_name dan credits berasal dari tabel courses. Jika ada mahasiswa yang belum mengambil mata kuliah apa pun, maka nilai kolom course_name dan credits akan menjadi NULL.

Berikut ini adalah contoh output tabel yang dihasilkan:

student_idnamecourse_namecredits
1John DoeMath 1013
2Jane DoeScience 1014
3Bob SmithNULLNULL
4Sarah LeeHistory 1013
5Tom LeeNULLNULL

Dari output tabel di atas, kita dapat melihat daftar seluruh mahasiswa beserta mata kuliah yang mereka ambil, termasuk mahasiswa yang belum mengambil mata kuliah apa pun. Mahasiswa Bob Smith dan Tom Lee belum mengambil mata kuliah apa pun, sehingga nilai kolom course_name dan credits untuk mahasiswa ini menjadi NULL.