Dalam Query lanjutan,
Ada 3 buah tabel yang digunakan masing-masing memiliki struktur sebagai berikut
:
1.
Tabel DEPARTMENTS
Nama
Tabel : DEPARTMENTS
Department_ID
|
Department_Name
|
Location_ID
|
10
|
Kaderisasi
|
1400
|
20
|
Syi’ar
|
1500
|
30
|
Annisa’
|
1300
|
40
|
Danus
|
1200
|
50
|
Maskam
|
1100
|
1.
Tabel Manager
Nama
Tabel : Manager
Manager_ID
|
First_Name
|
Last_Name
|
Department_ID
|
205
|
Tatang
|
Sholeh
|
50
|
207
|
Ayu
|
Purnama
|
40
|
100
|
Arina
|
Ifadaniyati
|
30
|
153
|
Fauzie
|
Indrawan
|
10
|
228
|
Hendro
|
Welas
|
20
|
2.
Tabel Job_History
Manager_ID
|
TTL
|
Job_ID
|
Department_ID
|
228
|
25-SEPT-93
|
DR_A
|
20
|
207
|
04-MAR-92
|
DR_M
|
40
|
153
|
18-JAN-92
|
DR_D
|
10
|
205
|
20-FEB-92
|
DR_S
|
50
|
100
|
22-JUL-92
|
DR_K
|
30
|
A.
Apa itu Subquery?
Query
|
Subquery
|
FROM...
WHERE... (SELECT....
FROM.....
WHERE....)
FROM.....
WHERE....)
B.
Pengggunaan Subquery
Subquery mengembalikan nilai ke main query.
Subquery
digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang
tidak diketahui.
C.
Subquery banyak kolom
Pada query jenis ini, tiap baris dari
main query dibandingkan dengan nilai
dari subquery multiple-row
dan multiple-column.
Main
Query
WHERE(Manage_ID,Department_ID) IN
Subquery
100 90
102 60
124 50
D. Pembandingan Kolom
Pembandingan kolom dalam subquery banyak kolom dapat
berupa :
· Pembandingan
berpasangan (Pairwise Comparison SubQuery)
· Pembandingan
tidak berpasangan (NonPairwise Comparison SubQuery)
E. Pairwise Comparison Subquery
pembandingan berpasangan untuk
menampilkan detail dari data pegawai yang dimanajeri oleh manajer dan
department yang sama dengan yang dimiliki oleh nomer pegawai 178
F.
Nonpairwise Comparison Subquery
Pembandingan tidak berpasangan untuk menampilkan detail
dari
data pegawai yang dimanajeri oleh manager yang sama
dengan pegawai dengan nomer
pegawai 174 atau 141 dan bekerja dalam departement yang
sama dengan pegawai yang
memiliki nomer pegawai 174 atau 141
G.
Penggunaan Query dalam klausa Form
Query bisa diletakkan di dalam klausa
FROM untuk membentuk tabel temporer. Query
semacam ini dikenal
juga dengan istilah
inline view, karena
tidak membentuk object database.
H.
Ekspresi Scalar Subquery
Ekspresi scalar subquery adalah subquery yang
mengembalikan hanya satu nilai kolom dari satu baris. Scalar subquery pada standart SQL-92 hanya
terbatas pada :
· SELECT
Statement (klausa FROM dan WHERE saja)
· Daftar VALUE
dari statement INSERT
Pada standart SQL-99, scalar subqueries dapat
diguanakan dalam :
· Kondisi dan
ekspresi sebagai bagian dari perintah DECODE dan CASE.
· Semua klausa
dari SELECT Statement kecuali GROUP BY.
Berikut ini contoh penggunaan scalar subquery dalam ekspresi
CASE :
Berikut ini contoh penggunaan scalar subquery dalam klausa
ORDER BY :
I.
Korelasi Subquery
Korelasi
SubQuery digunakan untuk
pemrosesan baris per
baris. Tiap-tiap subquery dijalankan sekali untuk setiap baris dari
outer query.
Proses korelasi query sebagai berikut :
AMBIL
Baris
dari outer query
|
JALANKAN
Inner query dengan
menggunakan nilai baris kandidat
|
GUNAKAN
Nilai dari inner qery untuk
quality / disquality baris kandidat
Proses korelasi
dimulai dengan mengambil baris
dari outer query,
kemudian inner query
dijalankan dengan menggunakan
nilai baris kandidat, kemudian nilai
dari inner query
digunakan untuk melakukan
kualifikasi atau mendiskualifikasi
baris kandidat.
Berikut ini
cara penulisan dari Korelasi SubQuery :
Pada gambar diatas, subquery merefer ke
kolom dari tabel yang ada pada parent atau outer query. Berikut ini
contoh penggunaan korelasi
subquery untuk mencari pegawai yang penghasilannya
melebihi rata-rata penghasilan pada departemen tempat mereka bekerja.
Berikut
ini contoh yang
lain dari korelasi
subquery yaitu untuk menampilkan pegawai yang pernah berganti job maksimal dua kali.
Korelasi
Subquery juga dapat
digunakan untuk meng-update
baris pada satu table berdasarkan pada baris dari table
yang lain, korelasi seperti itu dinamakan dengan Korelasi Update. Berikut cara penulisan Korelasi Update :
Lakukan denormalisasi
pada table EMPLOYEES
dengan menambahkan satu kolom pada tabel EMPLOYEES untuk
menyimpan nama departemen.
Kemudian isi
dari kolom nama
departemen didapatkan dari
tabel DEPARTMENTS dengan menggunakan Korelasi Update :
Korelasi Subquery juga dapat
digunakan untuk menghapus baris pada satu table berdasarkan pada
baris dari table
yang lain, korelasi
seperti itu dinamakan
dengan
Korelasi Delete.
Berikut cara penulisan Korelasi Delete :
Berikut contoh penggunaan Korelasi
DELETE untuk menghapus baris-baris dari tabel EMPLOYEES yang juga terdapat pada
tabel EMP_HISTORY.
J.
Penggunaan operator exits dan not exist
Operator EXISTS
dan NOT EXIST digunakan untuk
menguji keberadaan dari baris dalam himpunan
hasil dari subquery. Jika ditemukan,
maka :
· pencarian
tidak dilanjutkan dalam inner query dan kondisi ditandai TRUE. Jika tidak
ditemukan, maka :
· Kondisi
ditandai FALSE dan kondisi pencarian dilanjutkan dalam inner query.
Berikut penggunaan operator EXISTS untuk mencari
pegawai yang memiliki sedikitnya satu orang bawahan.
Berikut contoh penggunaan operator NOT EXIST untuk
menampilkan semua departemen yang tidak mempunyai pegawai.
K
Penggunaan Klausa With
Dengan menggunakan klausa WITH, kita
dapat menggunakan blok query yang sama dalam statement SELECT pada saat terjadi
lebih dari sekali dalam complex query. Klausa WITH mendapatkan hasil dari blok
query dan menyimpannya dalam tablespacetemporer kepunyaan user. Klausa WITH dapat meningkatkan performansi. Contoh penggunaan
klausa WITH dibwah ini digunakan untuk menampilkan nama departemen dan
total gaji untuk
tiap departemen yang memiliki
total gaji lebih
besar dari gaji rata-rata pada sembarang department.
Berikut ini contoh penggunaan klausa
WITH :
|
Tidak ada komentar:
Posting Komentar