Minggu, 20 Oktober 2013

Resume SQL1-Per6



Menggunakan Subquery untukMemecahkan QueryQuery
Menggunakan suatu Subquery untuk Memecahkan suatu Persoalan
Misalkan Anda ingin menulis suatu query untuk mencari tahu penghasilan siapa yang lebih besar
daripada penghasilan Abel.Untuk memecahkan masalah ini, Anda memerlukan dua query: satu query untuk mencari berapabanyak penghasilan Abel, dan query kedua untuk mencari penghasilan siapa yang lebih besar darijumlah itu.Anda dapat memecahkan persoalan ini dengan menggabungkan dua query, menempatkan satu querydi dalam query lain.Inner query (atau subquery) mengembalikan suatu nilai yang digunakan outer query (atau queryutama). Penggunaan suatu subquery sama dengan penggunaan dua query berturutturutdanmenggunakan hasil dari query pertama sebagai nilai pencari dalam query yang kedua.
Sintak Subquery
Suatu subquery adalah suatu pernyataan SELECT yang dilekatkan didalam suatu klausa pada
pernyataan SELECT lain. Anda dapat membangun pernyataanpernyataanyang kuat selain yang
sederhana dengan menggunakan subquerysubquery.Subquerysubquerybisa sangat bermanfaat
ketika Anda memerlukan untuk memilih barisbarisdari suatu table dengan suatu kondisi yang
tergantung pada data didalam tabel itu sendiri.Anda dapat menempatkan subquery didalam sejumlahklausaklausa
SQL, termasuk berikut :
· Klausa WHERE
· Klausa HAVING
· Klausa FROM
Didalam Syntax :
Operator termasuk suatu kondisi pembanding seperti >, =, atau IN
Catatan : Kondisikondisipembanding dibagi dalam dua kelas : singlerowoperator(>,=,>=,<,<>,<=) dan multiplerowoperator (IN, ANY, ALL).Subquery lebih dikenal sebagai suatu SELECT bersarang (nested), subSELECT,atau pernyataaninner SELECT. Secara umum subquery dieksekusi pertama kali, dan hasilnya digunakan untukmelengkapi kondisi query pada query utama (atau outer).
PedomanPedoman
untuk Menggunakan Subquery
· Suatu subquery harus diapit tanda kurung.
· Tempatkan subquery disisi kanan dari kondisi pembanding agar mudah dibaca.
· Pada Oracle8i dan keluarankeluaranberikutnya, suatu klausa ORDER BY bisa digunakan dandiperlukan dalam subquery untuk melakukan pemeringkatan (TopNanalysis).
Sebelumnyapada Oracle8i, bagaimanapun, subquerysubquerytidak bisa memuat klausaORDER BY.Klausa ORDER BY hanya sekali digunakan untuk suatu pernyataan SELECT;jika ditentukan, klausa ORDER BY berada diakhir pada pernyataan SELECT utama.
· Dua kelas dari kondisikondispembanding digunakan dalam subquerysubquery:singlerowoperatordan multiplerowoperator.
TipeTipedari Subquery
· Singlerowsubquery: Query yang mengembalikan hanya satu baris dari pernyataan inner
SELECT (SELECT terdalam).
· Multiplerowsubquery: Query yang mengembalikan lebih dari satu baris dari pernyataan inner
SELECT.
SingleRow
Subqueries
Suatu singlerow
subquery adalah mengembalikan satu baris dari pernyataan inner SELECT. Tipe
dari subquery ini menggunakan suatu singlerowoperator. Pada slide diberikan suatu daftar darioperatoroperatorsinglerow.
Contoh
Tampilkan pegawaipegawaiyang job Idnyasama dengan pegawai 141:
SELECT last_name, job_id
FROM employees
WHERE job_id =
(SELECT job_id
FROM employees
WHERE employee_id = 141 );
Menggunakan Grup Function dalam suatu Subquery
Anda bisa menampilkan data dari suatu query utama dengan menggunakan grup function didalam
subquery untuk mengembalikan suatu baris tunggal. Subquery berada dalam tanda kurung dan
diletakkan setelah kondisi pembanding.
Klausa HAVING dengan Subquery
Anda dapat menggunakan subquerysubquerytidak hanya pada klausa WHERE tapi bisa juga pada
klausa HAVING. Server Oracle mengeksekusi subquery, dan hasilnya dikembalikan ke dalam klausa
HAVING pada query utama.
MultipleRowSubqueries
Subquerysubqueryyang mengembalikan lebih dari satu baris disebut multiplerowsubqueries.
Anda menggunakan suatu multiplerowoperator, disamping suatu singlerowoperator, pada suatumiltiplerowsubquery. Multiplerowoperator memperkirakan satu atau lebih nilainilai:
Contoh
Cari pegawaipegawaiyang mendapat penghasilan yang sama dengan penghasilan minimum untuk
setiap departemen.
Inner query dieksekusi pertama kali, menghasilkan suatu hasil query. Blok query utama kemudian
memproses dan menggunakan nilainilaiyang dikembalikan oleh inner query untuk melengkapi
kondisi pencariannya. Sesungguhnya, query utama tampak pada server Oracle sebagai berikut:
SELECT last_name, salary, department_id
FROM employess
WHERE salary IN (2500, 4200, 6000, 7000, 800, 8600, 17000);
Operator ANY ( dan sinonimnya, operator SOME) membandingkan suatu nilai pada setiap nilai yang
dikembalikan oleh suatu subquery. Contoh pada slide menampilkan para pegawai yang bukan IT
programmers dan penghasilan siapa yang kurang dari beberapa IT programmer. Penhasilan
maksimum yang didapat seorang programmer adalah $ 9,000.
<ANY maksudnya kurang dari maksimum. >ANY maksudnya lebih dari minimum. =ANY adalah
sama dengan IN.
Operator ALL membandingkan suatu nilai untuk setiap nilai yang dikembalikan oleh suatu
subquery. Contoh dalam slide menampilkan para pegawai yang penghasilannya kurang daripenghasilan dari semua pegawai dengan suatu job ID IT_PROG dan siapa yang bukan IT_PROG.>ALL maskudnya lebih dari maksimum, dan <ALL maksudnya kurang dari minimum.Operator NOT dapat digunakan dengan operatoroperatorIN, ANY, dan ALL.

Tidak ada komentar:

Posting Komentar