info-b

Tutorial Belajar MySQL Part 24: Cara Menggabungkan Tabel MySQL (INNER JOIN)

Posted on

Hingga dengan panduan sebelum ini, kita hanya menampilkan hasil dari satu tabel saja. Relasional Database ialah mengenai kumpulan tabel yang saling berhubungan, dan pada Tutorial Belajar MySQL: Cara Menggabungkan Tabel MySQL dengan INNER JOIN ini kita akan mempelajari cara menyatukan hasil dari dua tabel atau lebih menggunakan query SELECT..INNER JOIN.


Mempersiapkan Tabel Sampel: mata_kuliah dan daftar_dosen

Selaku tabel contoh bagi panduan ini, saya masih menggunakan tabel contoh dari Tutorial Belajar MySQL: Menampilkan Data dari Tabel MySQL (SELECT). Seandainya kamu ingin mencoba seketika query yang akan kita bahas, silahkan mengikuti pedoman perancangan tabel contoh. Tabel kita akan terdiri dari tabel mata_kuliah dan tabel daftar_dosen.

Tabel daftar_dosen

NIP Nama Dosen No HP Tempat tinggal
0160436012 Sabrina Sari 0812349900 Pekanbaru
0260432002 Maya Ari Putri 0812345234 Palembang
0275430005 Susi Indriani 0812656532 Bogor
0480432066 Tia Santrini 0812451177 Padang
0576431001 M. Siddiq 0812979005 Jakarta
0770435006 Rubin Hadi 0812567678 Papua
0869437003 Mustalifah 0812338877 Aceh
1080432007 Arif Budiman 0812456345 Makasar

Tabel mata_kuliah

Kode Mata Kuliah Nama Matakuliah Jumlah SKS Semester Nip Dosen
MATDAS Matematika Basic 4 1 0160436012
FISDAS Fisika Basic 2 1 0480432066
TEKKOM Teknik Kompilasi 2 6 0480432066
JARKOM Jaringan Komputer 3 3 0770435006
DTBASE Database 4 4 0275430005
SISOPR Program Operasi 2 4 0160436012
MIKROP Mikro Prosesor 2 5 0480432066

Saya akan membahas sekilas kedua tabel diatas: tabel daftar_dosen berisi data dari dosen, dimana kolom NIP berisi NIP dari dosen. Di tabel mata_kuliah, berisi daftar mata kuliah. Yang perlu diperhatikan ialah kolom NIP dari kedua tabel. Kolom NIP inilah yang akan kita gunakan bagi menggabungkan kedua tabel.


Cara Menggabungkan Tabel MySQL dengan INNER JOIN

Tujuan dari menggabungkan tabel ialah bagi menyajikan informasi secara lebih detail. Contohnya dari tabel daftar_dosen dan tabel mata_kuliah diatas, tujuan kita ialah menyajikan informasi mata kuliah sekaligus nama dosen yang mendidik mata kuliah tersebut. Kita ingin menyajikan informasi yang berisi nama mata kuliah, jumlah SKS, dan nama dosen yang mendidik.

Query INNER JOIN mempunyai 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..ON

Format mendasar dari penulisan query SELECT..INNER JOIN..ON ialah:

  • nama_kolom_tampil ialah nama dari kolom yang akan kita tampilkan, dapat seluruh kolom pada tabel, atau hanya kolom tertentu saja.
  • nama_tabel_pertama ialah nama tabel pertama-tama yang akan digabung.
  • nama_tabel_kedua ialah nama tabel kedua yang akan digabung.
  • nama_kolom_join_tabel_pertama ialah nama kolom yang akan digunakan selaku join dari tabel pertama-tama.
  • nama_kolom_join_tabel_kedua ialah nama kolom yang akan digunakan selaku join dari tabel kedua.

Syarat bagi INNER JOIN ialah kedua tabel mesti mempunyai sebuah kolom dengan nilai yang sama yang akan kita gunakan pada proses JOIN. Pada contoh kita, kolom tersebut ialah kolom NIP dari tabel nama_dosen, dan kolom NIP_dosen dari tabel mata_kuliah. Perhatikan walaupun keduanya berisi NIP, namun nama kolomnya berbeda.

Query bagi SELECT..INNER JOIN..ON tabel mata_kuliah dengan daftar_dosen ialah:

Dari hasil query
SELECT
diatas, saya menggabungkan tabel mata_kuliah dan daftar_dosen bagi memperoleh tampilan seluruh mata kuliah, jumlah sks, dan nama dosen yang mendidik. Kita menggunakan tabel mata_kuliah selaku tabel pertama-tama, dan tabel daftar_dosen selaku tabel kedua.


Cara Menggabungkan Tabel MySQL dengan SELECT..INNER JOIN..USING

Cara JOIN kedua ialah menggunakan USING selaku pengganti ON bagi query INNER JOIN.

Format mendasar dari penulisan query SELECT..INNER JOIN..USING ialah:

  • nama_kolom_tampil ialah nama dari kolom yang akan kita tampilkan, dapat seluruh kolom pada tabel, atau hanya kolom tertentu saja.
  • nama_tabel_pertama ialah nama tabel pertama-tama yang akan digabung.
  • nama_tabel_kedua ialah nama tabel kedua yang akan digabung.
  • nama_kolom_join ialah nama kolom yang akan digunakan selaku join.

Syarat bagi INNER JOIN..USING ialah kedua tabel mesti mempunyai nama kolom yang sama. Pada contoh kita, kolom tersebut ialah kolom NIP. Namun karena nama kolom NIP bagi tabel mata_kuliah ialah NIP_dosen, sedangkan di kolom daftar_dosen kolom NIP hanya NIP saja, karenanya kita mesti menyamakannya. Bagi hal ini saya memutuskan kedua kolom akan bernama NIP_dosen.

Setelah kedua kolom NIP bernama sama, saatnya kita mengabungkan kedua tabel ini

Hasilnya sama persis dengan SELECT..INNER JOIN..ON, hanya berbeda cara penulisan.

Di pada MySQL, kata INNER JOIN  dapat diganti dengan CROSS JOIN, atau hanya JOIN saja. Ketiga kata kunci ini mempunyai kegunaan yang sama. MySQL menyediakannya agar dapat kompatible dengan SQL dari RDBMS lainnya seperti ORACLE dan MS SQL.

Misalnya bagi query kita diatas, dapat pun ditulis menjadi


Cara Penulisan Nama Kolom: Nama_Tabel.Nama_Kolom

Setelah kita merubah nama kolom NIP menjadi NIP_dosen di tabel daftar_dosen, sekarang ini tiap tabel mempunyai nama kolom yang sama, yakni NIP_dosen. Seandainya kita menjalankan kembali query SELECT..INNER JOIN..ON dengan nama kolom ini, MySQL akan mengeluarkan error:

Dari pesan error yang terjadi, sesungguhnya MySQL ‘bingung’ pada memilih kolom. Query ON NIP_dosen=NIP_dosen menjadi ambigu karena kedua tabel kita mempunyai nama kolom yang sama.

Bagi mengatasi ambiguitas ini, MySQL mengharuskan kita secara eksplisit menyebutkan nama tabelnya. Cara penulisan ini menggunakan tanda titik selaku pemisah:

Misalkan bagi merujuk di kolom NIP_dosen di tabel mata_kuliah, karenanya penulisannya menjadi:

Sehingga query SELECT..INNER JOIN..ON yang benar menjadi:


Query SELECT..INNER JOIN ini akan sering kita gunakan bagi menampilkan data dari beberapa tabel. Pada mendesain database, sedapat mungkin kita mengeleminasi data yang redundan (sama) dari satu tabel besar menjadi beberapa tabel kecil, lalu menggabungkannya di dikala menampilkan data.

Pada lanjutan panduan belajar MySQL berikutnya, kita akan membahas mengenai cara menghapus data dari tabel MySQL dengan query DELETE.


Sumber https://www.duniailkom.com/