MATERI 3
AKSES MULTITABLE DAN MULTILEVEL SELECT COMMAND
A. KOMPETENSI DASAR
1. Merancang SQL bertingkat dalam memanipulasi basis data
2. Membuat perintah SQL bertingkat dalam memanipulasi basis data
B. TUJUAN
Setelah mempelajari, mendiskusikan dan mempraktikkan materi ini, siswa dapat:
1. Menjelaskan akses multitable dan multilevel select command dengan baik dan
percaya diri.
2. Menerapkan akses multitable dan multilevel select command dengan baik dan
percaya diri
3. Menerapkan perintah SQL akses multitable dan multilevel select command dengan
baik dan percaya diri
4. Menjalankan perintah SQL akses multitable dan multilevel select command secara
baik, percaya diri dan sesuai aturan.
C. DASAR TEORI
1. AKSES MULTITABLE
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 1. pemodelan data konseptual (class diagram) di bawah ini. Tabel pelanggan
berhubungan dengan pesan, pesan dengan barang, dsb.
Pada pembuatan suatu aplikasi, terkadang 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. Pada dasarnya join tabel adalah mengkombinasikan dua buah tabel
berdasarkan perbandingan nilai-nilai kolom yang dipilih. Join tabel menghasilkan baris-baris
data yang hanya ada selama query itu dibuat atau dijalankan. Menggunakan join untuk
secara temporer menciptakan baris-baris data yang lengkap dari suatu database yang
membagi data-data yang berhubungan melalui atau ke beberapa tabel terpisah (hasil dari
normalisasi).
a. Inner Join
Dengan inner join, tabel akan digabungkan dua arah, sehingga tidak ada data yang
NULL disatu sisi. Sebagai contoh, akan menggabungkan tabel pelanggan dan tabel
pesan dimana hasil akhir 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)
Tabel pesan
Langkah penggabungannya:
Inner Join dengan WHERE
Penggabungan dengan klausa WHERE memiliki bentuk umum sebagai berikut:
Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:
Hasilnya:
Pada hasil perintah query di atas terlihat bahwa terdapat 5 (lima) transaksi yang
dilakukan oleh 3 (tiga) orang pelanggan. Jika dilihat 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.
Inner Join dengan klausa INNER JOIN
Berikut ini bentuk umumnya:
Dan berikut ini perintah SQL penggabungan tabel pelanggan dan pesan:
Hasil:
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:
Hasilnya:
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.
nim 104. Adapun dengan memanfaatkan subquery, maka penyelesaian kasus di atas hanya
memerlukan sebuah query.
Pada hakekatnya, subquery sangat berguna ketika sebuah query didasarkan pada
nilai-nilai yang tak diketahui. Sintaks formal subquery diperlihatkan sebagai berikut:
Subquery dapat diklasifikasikan ke dalam tiga jenis yaitu scalar, multiple-row, dan
multiple column.
a. Scalar Subquery
Subquery baris tunggal (scalar) hanya mengembalikan hasil satu baris data. Bentuk
subquery ini diperlihatkan seperti Gambar 2.
b. Multiple-Row Subquery
Subquery baris ganda (multiple-row) mengembalikan lebih dari satu baris data.
Bentuk subquery ini diperlihatkan seperti Gambar 3.
c. Multiple-Column Subquery
Subquery kolom ganda (multiple-column) mengembalikan lebih dari satu baris dan
satu kolom data. Bentuk subquery ini diperlihatkan seperti Gambar 3.
Tabel Jurusan
Data dosen pada tabel ini berisi kode dosen yang menjadi ketua jurusan.
2. ScalarSubquery
Contoh subquery baris tunggal adalah mendapatkan data mahasiswa yang jenis
kelaminnya sama dengan mahasiswa dengan nama “Wati”.
Sebagai hasilnya, didapatkan jenis kelamin mahasiswa dengan nama “Wati”, yakni
“P” yang selanjutnya digunakan oleh main query sehingga menghasilkan sebagai
berikut.
3. Multiple-RowSubquery
Pada subquery ini, kita menggunakan operator komparasi IN, ANY / SOME, atau ALL.
a. Operator IN
Operator IN memiliki arti : sama dengan member di dalam list. Sebagai contoh,
kita bisa menggunakan operator ini untuk mendapatkan data dosen yang
mengajar matakuliah.
b. Operator ANY/SOME
Operator ANY / SOME memiliki arti: membandingkan suatu nilai dengan setiap
nilai yang dikembalikan oleh subquery. Misalkan kita ingin mendapatkan data
matakuliah yang memiliki sks lebih besar dari sembarang sks matakuliah di
semester 3.
c. Operator ALL
Operator ALL memiliki arti: membandingkan suatu nilai dengan semua nilai yang
dikembalikan oleh subquery. Misal, kita ingin mendapatkan data matakuliah yang
memiliki sks lebih besar dari semua sks matakuliah di semester 3.
4. Multiple-ColumnSubquery
Subquery kolom ganda (atau tabel) juga menggunakan operator komparasi IN, ANY/
SOME, atau ALL. Pada query ini, nilai dari subquery dalam bentuk kolom ganda
dikomparasi main query. Sebagai contoh, misalkan kita ingin menampilkan data
matakuliah yang semester dan sksnya sesuai dengan semester dan sks matakuliah
dengan kode “PTI447”.
b. NOT EXISTS
Pernyataan berikut akan mendapatkan data matakuliah yang tidak diambil oleh
mahasiswa.
F. RANGKUMAN
Join tabel adalah mengkombinasikan dua buah tabel berdasarkan perbandingan
nilai-nilai kolom yang dipilih. Join tabel menghasilkan baris-baris data yang hanya
ada selama query itu dibuat atau dijalankan. Terdapat beberapa jenis join
diantaranya inner join dan outer join. Untuk outer join dibagi lagi menjadi 2 yaitu left
join dan right join.
Multilevel Select Command dikenal dengan nama subquery. Subquery (disebut juga
subselect atau nested select / query atau inner-select) adalah query yang ada di
dalam perintah SQL lain misalnya atau Keberadaan subquery secara nyata mampu
menyederhanakan persoalan-persoalan rumit berkaitan query data
G. TUGAS
1. 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:
2. SubQuery
Tabel Pegawai
H. DAFTAR PUSTAKA
Darsono. 2019. Basis Data Kelas XII. Jakarta: Bumi Aksara