Di dalam suatu RDBMS termasuk MySQL, tentunya sudah menjadi suatu kewajaran jika dalam satu database dapat terdiri dari beberapa tabel. Masing-masing tabel tersebut dapat berhubungan (berelasi) satu sama lain. Relasi antar-tabel dapat berupa relasi 1-1 (one-to-one), 1-M (one-to-many), atau M-N (many-to-many). Sebagai contoh terlihat pada gambar pemodelan data konseptual (class diagram) di bawah ini. Tabel pelanggan berhubungan dengan pesan, pesan dengan barang, dsb.
Pada
pembuatan suatu aplikasi, terkadang kita juga memerlukan tampilan data
yang tidak hanya berasal dari 1 (satu) tabel, namun bisa dari beberapa
tabel sekaligus. Contohnya, dari class diagram di
bawah, kita ingin menampilkan nama pelanggan berikut transaksi yang
pernah dilakukannya. Dari contoh tersebut, kita harus bisa menggabungkan minimal dua tabel, yaitu pelanggan dan pesan.
Untuk menggabungkan 2 (dua) atau lebih tabel, kita dapat menggunakan bentuk perintah JOIN. Dalam tutorial ini, akan dijelaskan secara bertahap mengenai bagaimana menggabungkan dua tabel atau lebih, terutama untuk menampilkan data yang berasal dari beberapa tabel. Contoh-contoh dalam tutorial ini secara khusus telah dicoba di database MySQL, namun demikian secara umum perintah penggabungan tabel di semua jenis database tidak jauh berbeda alias sama.
Sebelum belajar mengenai
perintah penggabungan tabel, perlu dipersiapkan tabel-tabel yang akan
dijadikan sebagai bahan latihan dan contoh dalam tutorial ini. Kita akan
menggunakan tabel rancangan sistem pemesanan barang (pembelian)
sederhana berikut ini. Untuk membuatnya, Anda dapat menggunakan tools
seperti PHPMyAdmin dan MySQLFront atau dapat juga melalui
command-prompt. Jika diperlukan, pelajari kembali postingan saya
sebelumnya mengenai administrasi database MySQL dengan PHPMyAdmin dan juga dasar-dasar perintah SQL. Jangan
lupa isikan beberapa contoh data ke tabel-tabel yang sudah Anda buat.
lupa isikan beberapa contoh data ke tabel-tabel yang sudah Anda buat.
Contoh Class Diagram Sistem Pembelian
1. Inner Join
Dengan
inner join, tabel akan digabungkan dua arah, sehingga tidak ada data
yang NULL di satu sisi. Sebagai contoh, kita akan menggabungkan tabel
pelanggan dan pesan dimana kita akan menampilkan daftar pelanggan yang
pernah melakukan pemesanan (transaksi). Misalkan isi tabel pelanggan dan
pesan adalah sebagai berikut :
Tabel pelanggan (hanya ditampilkan field id_pelanggan, nm_pelanggan dan email)
Contoh isi tabel pelanggan
Tabel pesan.
Contoh isi tabel pesan
Cara #1. Inner Join dengan WHERE.
Penggabungan dengan klausa WHERE memiliki bentuk umum sebagai berikut:
SELECT tabel1.*, tabel2.* FROM tabel1, tabel2 WHERE tabel1.PK=tabel2.FK;
Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:
SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan FROM pelanggan, pesan WHERE pelanggan.id_pelanggan=pesan.id_pelanggan;
Hasilnya sebagai berikut:
Hasil Penggabungan 2 Tabel dengan WHERE
Pada
hasil perintah query di atas terlihat bahwa terdapat 5 (lima) transaksi
yang dilakukan oleh 3 (tiga) orang pelanggan. Jika kita lihat kembali
isi tabel pelanggan di atas, maka terdapat satu pelanggan yang tidak
ditampilkan yaitu yang memiliki id pelanggan P0003. Pelanggan tersebut tidak ditampilkan karena belum pernah melakukan transaksi.
Cara #1. Inner Join dengan klausa INNER JOIN.
Berikut ini bentuk umumnya:
SELECT tabel1.*, tabel2.* FROM tabel1 INNER JOIN tabel2 ON tabel1.PK=tabel2.FK;
Dan berikut ini perintah SQL penggabungan tabel pelanggan dan pesan.
SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan FROM pelanggan INNER JOIN pesan ON pelanggan.id_pelanggan=pesan.id_pelanggan;
Hasilnya akan sama dengan gambar di atas (cara #1).
2. Outer Join
Dengan outer join, tabel akan digabungkan satu arah, sehingga memungkinkan ada data yang NULL (kosong)
di satu sisi. Sebagai contoh, kita akan menggabungkan tabel pelanggan
dan pesan dimana kita akan menampilkan daftar pelanggan yang pernah
melakukan pemesanan (transaksi).
Outer Join terbagi menjadi 2 (dua) yaitu LEFT JOIN dan RIGHT JOIN. Berikut ini bentuk umum dan contohnya:
LEFT JOIN.
Bentuk umum:
SELECT tabel1.*, tabel2.* FROM tabel1 LEFT JOIN tabel2 ON tabel1.PK=tabel2.FK;
Contoh perintah SQL:
SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan FROM pelanggan LEFT JOIN pesan ON pelanggan.id_pelanggan=pesan.id_pelanggan;
Hasilnya:
Hasil Perintah Left Join
Berbeda
dengan hasil sebelumnya (inner join), penggunaan left join akan
menampilkan juga data pelanggan dengan id P0003, walaupun pelanggan
tersebut belum pernah bertransaksi. Dan pada kolom id_pesan dan
tgl_pesan untuk pelanggan P0003 isinya NULL, artinya di tabel kanan
(pesan) pelanggan tersebut tidak ada.
RIGHT JOIN
Bentuk umum:
SELECT tabel1.*, tabel2.* FROM tabel1 RIGHT JOIN tabel2 ON tabel1.PK=tabel2.FK;
Contoh perintah SQL:
SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan FROM pelanggan RIGHT JOIN pesan ON pelanggan.id_pelanggan=pesan.id_pelanggan;
Hasilnya:
Hasil Perintah Right Join
Dengan
right join, tabel yang menjadi acuan adalah tabel sebelah kanan (tabel
pesan), jadi semua isi tabel pesan akan ditampilkan. Jika data pelanggan
tidak ada di tabel pelanggan, maka isi tabel pesan tetap ditampilkan.
Menggabungkan 3 Tabel atau Lebih
Untuk
menggabungkan tiga tabel atau lebih, pada dasarnya sama dengan
penggabungan 2 (dua) tabel. Sebagai contoh misalnya kita akan
menampilkan barang-barang yang dipesan beserta nama barang dan harganya
untuk pemesanan dengan nomor 1, sedemikian sehingga hasilnya menjadi
sebagai berikut:
Contoh Hasil Penggabungan 3 Tabel
Bagaimana perintah SQL-nya? Hayoo, siapa bisa? silahkan jawab di bagian komentar tutorial di bawah ini.
form: anessinaga.staff.ipb.ac.id
Menangkan Jutaan Rupiah dan Dapatkan Jackpot Hingga Puluhan Juta Dengan Bermain di www(.)SmsQQ(.)com
BalasHapusKelebihan dari Agen Judi Online SmsQQ :
-Situs Aman dan Terpercaya.
- Minimal Deposit Hanya Rp.10.000
- Proses Setor Dana & Tarik Dana Akan Diproses Dengan Cepat (Jika Tidak Ada Gangguan).
- Bonus Turnover 0.3%-0.5% (Disetiap Harinya)
- Bonus Refferal 20% (Seumur Hidup)
-Pelayanan Ramah dan Sopan.Customer Service Online 24 Jam.
- 4 Bank Lokal Tersedia : BCA-MANDIRI-BNI-BRI
8 Permainan Dalam 1 ID :
Poker - BandarQ - DominoQQ - Capsa Susun - AduQ - Sakong - Bandar Poker - Bandar66
Info Lebih Lanjut Hubungi Kami di :
BBM: 2AD05265
WA: +855968010699
Skype: smsqqcom@gmail.com
Lucu sekali anda,disuruhjawab pertanyaan di atas malah yg lain
Hapuskek mana kak yang 3
BalasHapus