Sesuai janji saya, saya akan memposting Materi SubQuery.
Apa itu SubQuery? SubQuery adalah statement SELECT yang
dilampirkan sebagai klausa dalam SQL statement yang lain.
Pada gambar di atas terlihat bahwa sub query dijalankan
sekali sebelum main query. Contoh penulisan posisi penulisan subquery dalam SQL
command :
SELECT select_list
FROM table
WHERE expr operator (SELECT select_list FROM table);
|
*) Penggunaan SubQuery
Tabel employees
employee_id
|
name
|
address
|
salary
|
111
|
Dharu Wihartasih
|
Kudus
|
2500000
|
112
|
Annisa Kristi
|
Pemalang
|
2450000
|
113
|
Afifah
|
Kudus
|
3100000
|
114
|
Rizka Sweet J.
|
Salatiga
|
2350000
|
115
|
Chintia Riadina M.
|
Semarang
|
2550000
|
116
|
Miskatun Niswah
|
Semarang
|
2400000
|
117
|
Fatati Nuriana
|
Banyumas
|
2300000
|
118
|
Darkonah
|
Brebes
|
2500000
|
Salah satu dari penggunaan Subquery adalah untuk
menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui
(unknown values). Berikut contohnya :
SELECT name
FROM employees
WHERE salary > (SELECT
salary FROM employees WHERE employees_id=111);
|
Maka bisa kita lihat hasilnya,
name
|
Afifah
|
Chintia Riadina M.
|
Mudahkan asalkan kita bisa menerapkan logika dari query
penggunaan subquery akan lebih mudah.
Contoh dari penggunaan subquery yang kedua yaitu dapat
menggunakan aggregate function seperti count , sum, avg, distinct. Lihat contoh
berikut ini.
Tabel Mahasiswa
nim
|
namaMhs
|
5302411108
|
Annisa Kristi
|
5302411114
|
Dharu Wihartasih
|
5302411149
|
Afifah
|
5302411111
|
Reni Ikawati
|
5302411133
|
Rizka Sweet J
|
5302411131
|
Chintia Riadina M
|
Tabel Nilai
nim
|
KodeMK
|
nilai
|
5302411111
|
101
|
88
|
5302411114
|
102
|
78
|
5302411114
|
103
|
84
|
5302411133
|
101
|
85
|
5302411149
|
102
|
87
|
5302411108
|
103
|
79
|
5302411131
|
101
|
82
|
Tabel MataKuliah
KodeMK
|
namaMK
|
Sks
|
101
|
Pemrograman Berorientasi objek
|
2
|
102
|
Sistem Basis Data
|
2
|
103
|
Pengolahan Sinyal Digital
|
2
|
Secara umum untuk menampilkan nilai maksimal pada KodeMK =’102’
adalah sebagai berikut.
Select*from Nilai where KodeMK=’102’ order by nilai desc
limit 0,1;
Maka akan tampil
nim
|
KodeMK
|
Nilai
|
5302411149
|
102
|
87
|
Itu penggunaan secara umum untuk menampilkan data tertinggi
yang tidak diketahui, namun bila kita menggunakan sub query syntaknya:
SELECT nim,kodeMK,nilai from nilai where nilai=max(nilai);
Secara logika sudah benar, tetapi ditemukan eror
Kita akan menggunakan aggregate function yaitu MAX, akan
tetapi sayang sekali hanya bisa
digunakan setelah kata SELECT dan HAVING. Maka dari itu kita membutuhkan subquery sebagai tambahan
untuk memperjelas klausa.
Select nim,kodeMK,nilai where nilai =(select max(nilai) from nilai);
Bisa kita lihat penggunaan subquery dalam hal penggunaan
aggregate function untuk tambahan clausa di WHERE
Tidak ada komentar:
Posting Komentar