Category:
Tutorial MySQL
Sebagai 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 kita bahas, silahkan mengikuti petunjuk pembuatan tabel sample. Tabel kita akan terdiri dari tabel mata_kuliah dan tabel daftar_dosen.
NIP
|
Nama Dosen
|
No HP
|
Alamat
|
---|---|---|---|
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 Dasar | 4 | 1 | 0160436012 |
FISDAS | Fisika Dasar | 2 | 1 | 0480432066 |
TEKKOM | Teknik Kompilasi | 2 | 6 | 0480432066 |
JARKOM | Jaringan Komputer | 3 | 3 | 0770435006 |
DTBASE | Database | 4 | 4 | 0275430005 |
SISOPR | Sistem Operasi | 2 | 4 | 0160436012 |
MIKROP | Mikro Prosesor | 2 | 5 | 0480432066 |
Menggabungkan Tabel MySQL dengan INNER JOIN
Tujuan untuk menggabungkan tabel adalah untuk menyajikan informasi secara lebih detail. Contohnya dari tabel daftar_dosen dan tabel mata_kuliah diatas, tujuan kita adalah menyajikan informasi mata kuliah sekaligus nama dosen yang mengajar mata kuliah tersebut. Kita ingin menyajikan informasi yang berisi 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.
Menggabungkan Tabel MySQL dengan 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 |
- 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.
Query untuk SELECT..INNER JOIN..ON tabel mata_kuliah dengan daftar_dosen adalah:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| 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) |
Menggabungkan Tabel MySQL dengan SELECT..INNER JOIN..USING
Cara 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) |
- 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.
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 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| 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) |
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 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_Kolom
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:
1
2
3
| 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 |
Untuk mengatasi ambiguitas ini, MySQL mengharuskan kita secara eksplisit menyebutkan nama tabelnya. Cara penulisan ini menggunakan tanda titik sebagai pemisah:
Nama_Tabel.Nama_Kolom |
Mata_kuliah.NIP_dosen |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| 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 ini akan sering kita gunakan untuk menampilkan data dari beberapa tabel. Dalam mendesain database, sedapat mungkin kita mengeleminasi data yang redundan (sama) dari satu tabel besar menjadi beberapa tabel kecil, lalu menggabungkannya pada saat menampilkan data.
from:www.duniailkom.com
0 komentar:
Posting Komentar