Kali ini kita akan membahas artikel Menampilkan Data Gabungan Table MySQL/MariaDB (JOIN). ini akan dipelajari cara menyatukan hasil dari dua tabel atau tentang kumpulan tabel yang saling berhubungan. lebih menggunakan query JOIN.
ada 3 materi query yang akan kita bahas dalam tutorial kali ini yaitu:
- Pembahasan Query SELECT..INNER JOIN
- Pembahasan Query SELECT..LEFT JOIN
- Pembahasan Query SELECT..RIGHT JOIN
Persiapkan Table Contoh
Sebagai bahan pembelajaran kali ini saya akan menggunakan tabel contoh yakni table anggota dan gaji, Cara membuat table sudah pernah kita bahas dalam tutorial-tutorial sebelumnya, dapat dilihat pada link Menampilkan dan Mengubah Data MySQL/MariaDB (SELECT & UPDATE)
Oleh karena itu silahkan buat ulang tabel anggota dan gaji agar bisa mengikuti contoh dalam tutorial ini.
Nama Database : db_fixcoding
Nama Table : anggota
Nama Kolom/Field : No_Anggota, Nama, Jabatan
Tipe Data :
- No_Anggota = Char(50)
- Nama = Char(50)
- Jabatan = Char(35)
No_Anggota | Nama | Jabatan |
1123-2312-1233 | Ade Putra Syamsuri | CEO |
4421-2142-5004 | Khoirunnisa | Sekertaris |
1231-3432-5552 | Annisa Nindiyani | Finance |
Nama Table : gaji
Nama Kolom/Field : Jabatan, Gaji, Keterangan
Tipe Data :
- Jabatan = Char(35)
- Gaji = Char(35)
- Keterangan Char(45)
Jabatan | Gaji | Keterangan |
CEO | 15.000.000 | Gaji Pokok |
Sekertaris | 8.000.000 | Gaji Pokok |
Finance | 7.000.000 | Gaji Pokok |
CEO | 3.000.000 | Insentif |
CEO | 2.000.000 | Tunjangan |
CEO | 1.000.o00 | Bonus |
Sekertaris | 2.000.000 | Lembur |
Finance | 2.500.000 | Bonus |
Finence | 3.500.000 | Lembur |
Pembahasan Query SELECT.. INNER JOIN
Tujuan dari menggabungkan tabel adalah untuk menyajikan informasi secara lebih detail.
Contohnya dari tabel anggota diatas. Kita ingin menyajikan informasi data anggota sekaligus gaji yang akan didapatkan sesuai jabatan. Data yang ingin disajikan adalah nama anggota, no anggota, jabatan, gaji, keterangan yang didapatkan.
Query INNER JOIN memiliki beberapa variasi, yaitu SELECT..INNER JOIN..ON dan SELECT..INNER JOIN..USING. Kita akan membahasnya satu persatu.
Cara Menggabungkan Tabel MySQL/MariaDB dengan query SELECT..INNER JOIN..ON
Format dasar dari penulisan query SELECT..INNER JOIN..ON adalah:
SELECT nama_kolom_tampil FROM nama_tabel_pertama INNER JOIN nama_tabel_kedua ON nama_kolom_join_tabel_pertama = nama_kolom_join_tabel_kedua
Penjelasan Format Dasar query diatas :
- nama_kolom_tampil adalah nama dari kolom yang akan kita tampilkan, bisa semua kolom dalam tabel, atau hanya kolom tertentu saja.
- nama_tabel_pertama adalah nama tabel pertama yang akan digabung.
- nama_tabel_kedua adalah nama tabel kedua yang akan digabung.
- nama_kolom_join_tabel_pertama adalah nama kolom yang akan digunakan sebagai join dari tabel pertama.
- nama_kolom_join_tabel_kedua adalah nama kolom yang akan digunakan sebagai join dari tabel kedua.
Syarat untuk INNER JOIN adalah kedua tabel harus memiliki sebuah kolom dengan nilai yang sama. Kolom tersebut yang akan digunakan dalam proses JOIN.
Pada contoh diatas, kolom yang sama itu adalah kolom Jabatan dari tabel Gaji, dan kolom Jabatan dari tabel Anggota.
Query untuk SELECT..INNER JOIN..ON tabel anggota dengan gaji adalah:
select No_Anggota, Nama, anggota.jabatan, gaji, keterangan from anggota inner join gaji on anggota.jabatan = gaji.jabatan;
Penjelasan Singkat :
- Di dalam MySQL/MariaDB, kata INNER JOIN dapat diganti dengan CROSS JOIN, atau hanya JOIN saja. Ketiga kata kunci ini memiliki fungsi yang sama. MySQL menyediakannya agar dapat kompatible dengan bahasa SQL dari RDBMS lainnya seperti ORACLE dan MS SQL.
- Pada Contoh diatas kita telah menuliskan nama table anggota.jabatan untuk mencegah MySQL ‘bingung’ dalam memilih kolom. Query ON jabatan=jabatan menjadi ambigu karena kedua tabel kita memiliki nama kolom yang sama.Untuk mengatasi ambiguitas ini, MySQL mengharuskan kita secara eksplisit menyebutkan nama tabelnya. Cara penulisan ini menggunakan tanda titik sebagai pemisah:
-
anggota.jabatan
Cara Menggabungkan Tabel MySQL/MariaDB dengan query SELECT..LEFT JOIN..ON
Format dasar dari penulisan query SELECT..INNER JOIN..ON adalah:
SELECT nama_kolom_tampil FROM nama_tabel_pertama LEFT JOIN nama_tabel_kedua ON nama_kolom_join_tabel_pertama = nama_kolom_join_tabel_kedua
Penjelasan Format Dasar query diatas :
- nama_kolom_tampil adalah nama dari kolom yang akan kita tampilkan, bisa semua kolom dalam tabel, atau hanya kolom tertentu saja.
- nama_tabel_pertama adalah nama tabel pertama yang akan digabung.
- nama_tabel_kedua adalah nama tabel kedua yang akan digabung.
- nama_kolom_join_tabel_pertama adalah nama kolom yang akan digunakan sebagai join dari tabel pertama.
- nama_kolom_join_tabel_kedua adalah nama kolom yang akan digunakan sebagai join dari tabel kedua.
Syarat untuk LEFT JOIN juga sama seperti join lainnya yaitu kedua tabel harus memiliki sebuah kolom dengan nilai yang sama. Kolom tersebut yang akan digunakan dalam proses JOIN.
Query untuk SELECT..LEFT JOIN..ON tabel anggota dengan gaji adalah:
select No_Anggota, Nama, anggota.jabatan, gaji, keterangan from anggota left join gaji on anggota.jabatan = gaji.jabatan;
Penjelasan Singkat:
- Tidak ada perbedaan antara hasil Query INNER JOIN dengan LEFT JOIN
- Pada Contoh diatas kita telah menuliskan nama table anggota.jabatan untuk mencegah MySQL ‘bingung’ dalam memilih kolom. Query ON jabatan=jabatan menjadi ambigu karena kedua tabel kita memiliki nama kolom yang sama.Untuk mengatasi ambiguitas ini, MySQL mengharuskan kita secara eksplisit menyebutkan nama tabelnya. Cara penulisan ini menggunakan tanda titik sebagai pemisah:
-
anggota.jabatan
Cara Menggabungkan Tabel MySQL/MariaDB dengan query SELECT..RIGHT JOIN..ON
Format dasar dari penulisan query SELECT..RIGHT JOIN..ON adalah:
SELECT nama_kolom_tampil FROM nama_tabel_pertama RIGHT JOIN nama_tabel_kedua ON nama_kolom_join_tabel_pertama = nama_kolom_join_tabel_kedua
Penjelasan Format Dasar query diatas :
- nama_kolom_tampil adalah nama dari kolom yang akan kita tampilkan, bisa semua kolom dalam tabel, atau hanya kolom tertentu saja.
- nama_tabel_pertama adalah nama tabel pertama yang akan digabung.
- nama_tabel_kedua adalah nama tabel kedua yang akan digabung.
- nama_kolom_join_tabel_pertama adalah nama kolom yang akan digunakan sebagai join dari tabel pertama.
- nama_kolom_join_tabel_kedua adalah nama kolom yang akan digunakan sebagai join dari tabel kedua.
Syarat untuk RIGHT JOIN juga sama seperti join lainnya yaitu kedua tabel harus memiliki sebuah kolom dengan nilai yang sama. Kolom tersebut yang akan digunakan dalam proses JOIN.
Query untuk SELECT..RIGHT JOIN..ON tabel anggota dengan gaji adalah:
select No_Anggota, Nama, anggota.jabatan, gaji, keterangan from anggota right join gaji on anggota.jabatan = gaji.jabatan;
Penjelasan Singkat :
- Terdapat perbedaan antara hasil Query INNER JOIN dan LEFT JOIN dengan RIGHT JOIN
- Pada Contoh diatas kita telah menuliskan nama table anggota.jabatan untuk mencegah MySQL ‘bingung’ dalam memilih kolom. Query ON jabatan=jabatan menjadi ambigu karena kedua tabel kita memiliki nama kolom yang sama.Untuk mengatasi ambiguitas ini, MySQL mengharuskan kita secara eksplisit menyebutkan nama tabelnya. Cara penulisan ini menggunakan tanda titik sebagai pemisah:
-
anggota.jabatan
Kesimpulan :
INNER JOIN: perintah yang digunakan untuk menampilkan sebuah data atau record dengan menghubungkan dua table atau lebih dalam satu perintah, pada perintah inner join data yang akan ditampilkan hanyalah data yang memiliki pasangan saja, maksudnya yaitu data pada table tidak memiliki sebuah kesamaan maka data tidak akan ditampilkan.
LEFT JOIN: fungsi dari left join hampir sama dengan inner join dan right join, namun pada LEFT JOIN kebalikan dari RIGHT JOIN, jika pada right join akan membuat sebuah parameter di sebelah kanan namun pada left join akan membuat sebuah parameter dari table sebelah kiri, dan jika ada data atau record yang kosong atau tidak berelasi maka akan berisi NULL di sebelah kanan.
RIGHT JOIN: fungsi Right Join, fungsi ini hampir sama dengan fungsi Left Join ataupun kebalikannya, dimana Right Join akan menghubungkan tabel dan menampilkan semua data (kanan) pada tabel yang tidak berhubungan, dan data yang kosong akan bernilai NULL
Query SELECT.. JOIN akan sering kita pakai untuk menampilkan data dari beberapa tabel.
Ketika mendesain database, sedapat mungkin eleminasi data yang redundan (data yang berulang) dari satu tabel besar menjadi beberapa tabel kecil, lalu digabung pada saat menampilkan data.
Demikianlah pembahasan artikel tentang Menampilkan Data Gabungan Table MySQL/MariaDB (JOIN) selanjutnya kita akan membahas banyak tentang database, nantikan artikel-artikel menarik lainnya di fixcoding.id.