Sampai dengan tutorial sebelum ini, kita hanya menampilkan hasil dari satu tabel saja. Relasional Database adalah tentang kumpulan tabel yang saling berhubungan. Show
Dalam Tutorial Belajar MySQL: Cara Menggabungkan Tabel MySQL dengan INNER JOIN ini akan dipelajari cara menyatukan hasil dari dua tabel atau lebih menggunakan query SELECT..INNER JOIN. Mempersiapkan Tabel Sample: mata_kuliah dan daftar_dosenSebagai tabel sample untuk tutorial ini, saya masih menggunakan tabel sample dari Tutorial Belajar MySQL: Menampilkan Data dari Tabel MySQL (SELECT). Jika anda ingin mencoba langsung query yang akan di bahas, silahkan ikuti petunjuk pembuatan tabel tersebut. Tabel kita akan terdiri dari tabel mata_kuliah dan tabel daftar_dosen. Isi tabel daftar_dosen:
Isi tabel mata_kuliah:
Tabel daftar_dosen berisi data dari dosen, dimana kolom NIP berisi NIP dosen. Pada tabel mata_kuliah, berisi daftar mata kuliah. Yang perlu diperhatikan adalah kolom NIP dari kedua tabel. Kolom NIP inilah yang akan kita pakai untuk menggabungkan kedua tabel. Cara Menggabungkan Tabel MySQL dengan INNER JOINTujuan dari menggabungkan tabel adalah untuk menyajikan informasi secara lebih detail. Contohnya dari tabel daftar_dosen dan tabel mata_kuliah diatas. Kita ingin menyajikan informasi mata kuliah sekaligus nama dosen yang mengajar mata kuliah tersebut. Data yang ingin disajikan adalah nama mata kuliah, jumlah SKS, dan nama dosen yang mengajar. 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 dengan query SELECT..INNER JOIN..ONFormat 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
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 kita, kolom itu adalah kolom NIP dari tabel nama_dosen, dan kolom NIP_dosen dari tabel mata_kuliah. Perhatikan walaupun keduanya berisi NIP, namun nama kolomnya berbeda. Query untuk SELECT..INNER JOIN..ON tabel mata_kuliah dengan daftar_dosen adalah: mysql> SELECT nama_matkul,jumlah_SKS,nama_dosen FROM mata_kuliah INNER JOIN daftar_dosen ON NIP_dosen=NIP; +-------------------+------------+---------------+ | nama_matkul | jumlah_SKS | nama_dosen | +-------------------+------------+---------------+ | Database | 4 | Susi Indriani | | Fisika Dasar | 2 | Tia Santrini | | Jaringan Komputer | 3 | Rubin Hadi | | Matematika Dasar | 4 | Sabrina Sari | | Mikro Prosesor | 2 | Tia Santrini | | Sistem Operasi | 2 | Sabrina Sari | | Teknik Kompilasi | 2 | Tia Santrini | +-------------------+------------+---------------+ 7 rows in set (0.00 sec) Dari hasil query SELECT diatas, saya menggabung tabel mata_kuliah dan daftar_dosen untuk mendapatkan tampilan seluruh mata kuliah, jumlah sks, dan nama dosen yang mengajar. Kita menggunakan tabel mata_kuliah sebagai tabel pertama, dan tabel daftar_dosen sebagai tabel kedua. Cara Menggabungkan Tabel MySQL dengan SELECT..INNER JOIN..USINGCara JOIN kedua adalah menggunakan USING sebagai pengganti ON untuk query INNER JOIN. Format dasar dari penulisan query SELECT..INNER JOIN..USING adalah: SELECT nama_kolom_tampil FROM nama_tabel_pertama INNER JOIN nama_tabel_kedua USING (nama_kolom_join)
Syarat untuk INNER JOIN..USING adalah kedua tabel harus memiliki nama kolom yang sama. Dalam contoh kita, kolom tersebut adalah kolom NIP. Namun karena nama kolom NIP untuk tabel mata_kuliah adalah NIP_dosen, sedangkan pada kolom daftar_dosen kolom NIP hanya NIP saja, maka harus disamakan terlebih dahulu. Untuk hal ini saya memutuskan kedua kolom akan bernama NIP_dosen. mysql> ALTER TABLE daftar_dosen CHANGE NIP NIP_dosen CHAR(10); Query OK, 8 rows affected (0.08 sec) Records: 8 Duplicates: 0 Warnings: 0 Setelah kedua kolom NIP bernama sama, saatnya kita menggabungkan kedua tabel ini mysql> SELECT nama_matkul, jumlah_SKS, nama_dosen FROM mata_kuliah INNER JOIN daftar_dosen USING (NIP_dosen); +-------------------+------------+---------------+ | nama_matkul | jumlah_SKS | nama_dosen | +-------------------+------------+---------------+ | Database | 4 | Susi Indriani | | Fisika Dasar | 2 | Tia Santrini | | Jaringan Komputer | 3 | Rubin Hadi | | Matematika Dasar | 4 | Sabrina Sari | | Mikro Prosesor | 2 | Tia Santrini | | Sistem Operasi | 2 | Sabrina Sari | | Teknik Kompilasi | 2 | Tia Santrini | +-------------------+------------+---------------+ 7 rows in set (0.00 sec) Hasilnya sama persis dengan SELECT..INNER JOIN..ON, hanya berbeda cara penulisan. Di dalam MySQL, 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. Misalnya untuk query kita diatas, dapat juga ditulis menjadi mysql> SELECT nama_matkul, jumlah_SKS, nama_dosen FROM mata_kuliah CROSS JOIN daftar_dosen USING (NIP_dosen); Cara Penulisan Nama Kolom: Nama_Tabel.Nama_KolomSetelah kita merubah nama kolom NIP menjadi NIP_dosen pada tabel daftar_dosen, sekarang tiap tabel memiliki nama kolom yang sama, yakni NIP_dosen. Jika kita jalankan kembali query SELECT..INNER JOIN..ON dengan nama kolom ini, MySQL akan mengeluarkan error: mysql> SELECT nama_matkul,jumlah_SKS,nama_dosen FROM mata_kuliah INNER JOIN daftar_dosen ON NIP_dosen=NIP_dosen; ERROR 1052 (23000): Column 'NIP_dosen' in on clause is ambiguous Dari pesan error yang terjadi, MySQL ‘bingung’ dalam memilih kolom. Query ON NIP_dosen=NIP_dosen 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: Nama_Tabel.Nama_Kolom Misalkan untuk merujuk pada kolom NIP_dosen pada tabel mata_kuliah, maka penulisannya menjadi: Mata_kuliah.NIP_dosen Sehingga query SELECT..INNER JOIN..ON yang benar adalah: mysql> SELECT nama_matkul,jumlah_SKS,nama_dosen FROM mata_kuliah INNER JOIN daftar_dosen ON mata_kuliah.NIP_dosen=daftar_dosen.NIP_dosen; +-------------------+------------+---------------+ | nama_matkul | jumlah_SKS | nama_dosen | +-------------------+------------+---------------+ | Database | 4 | Susi Indriani | | Fisika Dasar | 2 | Tia Santrini | | Jaringan Komputer | 3 | Rubin Hadi | | Matematika Dasar | 4 | Sabrina Sari | | Mikro Prosesor | 2 | Tia Santrini | | Sistem Operasi | 2 | Sabrina Sari | | Teknik Kompilasi | 2 | Tia Santrini | +-------------------+------------+---------------+ 7 rows in set (0.00 sec) Query SELECT..INNER 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. Dalam lanjutan tutorial belajar MySQL berikutnya, kita akan bahas tentang cara menghapus data dari tabel MySQL dengan query DELETE. Apa itu inner join di mysql?Kesimpulannya, Inner Join adalah suatu perintah pada SQL Server digunakan untuk menggabungkan beberapa tabel . Sehingga, akan menampilkan data-data yang mempunyai nilai sama antar tabel dalam sebuah database.
Apakah syarat untuk menggunakan inner join?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 kita, kolom itu adalah kolom NIP dari tabel nama_dosen, dan kolom NIP_dosen dari tabel mata_kuliah.
Apa fungsi dari inner join dalam query?Inner join menggabungkan data dari dua tabel kapan pun ditemukan nilai mirip dalam bidang umum di kedua tabel.
Apa yang digunakan untuk menghubungkan 2 atau lebih tabel dalam database?Untuk menggabungkan 2 (dua) atau lebih tabel, kita dapat menggunakan bentuk perintah JOIN.
|