Kita ingin menyajikan informasi yang berisi nama mata
kuliah, jumlah SKS, dan nama dosen yang mengajar. Yang perlu diperhatikan adalah kolom NIP dari kedua tabel.
Kolom NIP inilah yang akan kita gunakan untuk menggabungkan kedua
tabel. Kita ingin menyajikan informasi yang berisi nama mata
kuliah, jumlah SKS, dan nama dosen yang mengajar. Yang perlu diperhatikan adalah kolom NIP dari kedua tabel.
Kolom NIP inilah yang akan kita gunakan untuk menggabungkan kedua
tabel.
INNER JOIN
Query INNER
JOIN memiliki beberapa variasi, yaitu SELECT..INNER
JOIN..ON dan SELECT..INNER
JOIN..USING. Kita akan membahasnya satu persatu.
INNER JOIN ON
•
Syarat
untuk INNER JOIN adalah kedua tabel harus memiliki
sebuah kolom dengan nilai yang sama yang akan kita gunakan dalam
proses JOIN. Dalam contoh kita, kolom tersebut adalah kolom
NIP dari tabel nama_dosen, dan kolom NIP_dosen dari
tabel mata_kuliah. Perhatikan walaupun keduanya berisi NIP, namun
nama kolomnya berbeda.
•
Saya
akan menggabungkan 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.
" SELECT nama_kolom_tampil
FROM nama_tabel_pertama INNER JOIN nama_tabel_kedua ON nama_kolom_join_tabel_pertama
= nama_kolom_join_tabel_kedua "
•
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.
Hasilnya :
INNER JOIN USING
•
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 NIPsaja,
maka kita harus menyamakannya. Untuk hal ini saya memutuskan kedua kolom akan
bernama NIP_dosen.
" SELECT nama_kolom_tampil
FROM nama_tabel_pertama INNER JOIN nama_tabel_kedua USING (nama_kolom_join) "
•
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 adalah nama kolom yang akan
digunakan sebagai join.
Hasilnya :
Perbaikan untuk
INNER JOIN ON :
•
Setelah
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 menjalankan kembali query SELECT..INNER JOIN..ON dengan
nama kolom ini, MySQL akan mengeluarkan error:
•
Dari
pesan error yang terjadi, sebenarnya 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 menjadi: