Jumat, 14 Desember 2012

SUBQUERY

Subquery adalah sebuah perintah atau query dalam query, lebih jelasnya perintah SELECT didalam perintah SELECT, lihat analogi disamping kiri



diamana query satu adalah sebuah query yang datanya akan bernilai sama dengan yang ada pada subquery.Sehingga bisa dikatakan query1 akan ditampilkan datanya diamana data tersebut merupakan hasil seleksi pada subquery.Adapun beberapa klausa yang digunakan dalam subquery ini adalah :
  • WHERE 
  • HAVING 
  • FROM 
adapun type-type dari sub query adalah :


  • Single row yaitu return valuenya hanya satu misal : DIKDIK
Single row subquery memberikan hasil hanya satu baris pada bagian subquery.Untuk single row subquery ini yang digunakan adalah operator pembandingan : = , > , >= , < , <= , atau <>.Contoh :


select last_name, job_id from employees where job_id = (select job_id from employees where employee_id = 141);




Multiple row yaitu return valuenya lebih dari satu misal : DIKDIK, PRASTYO


  • Multiple Row Subquery adalah subquery yang menghasilkan lebih dari satu baris. Untuk multiple row subquery ini yang digunakan adalah operator pembandingan : IN, ANY atau ALL.Adapun penjelasan penggunaan dari klausa untuk multiple row adalah :
    •  IN adalah klausa yang menyatakan bahwa query1 akan menghasilkan nilai yang sama dengan subquery.
select last_name, salary, department_id from employees where salary in(select min(salary) from employees group by department_id);


Query diatas akan menampilkan data last_name,salary,department_id from employees dengan salary berada pada gaji terkecil dari employees dengan pengelompokan data berdasar department_id maka yang akan ditampilkan adalah data yang memiliki salary terkecil dengan pengelompokan data berdasar department_id jika tidak dikelompokan maka hanya 1 data yang ditampilkan namun query tersebut error.dan permintaannya adalah harus memakai pengelompokan data.

Pada penggunaan ANY, sembarang operator relasional (seperti =, <>, dan >) bisa digunakan.
Contoh kondisi dalam WHERE pada pemakaian ANY
gaji > ANY(S)
Dalam hal ini operator relasional yang digunakan berupa “lebih dari” dan S adalah subquery. Andaikan subquery S menghasilkan G1, G2, . . . , Gn maka kondisi di atas identik dengan:
(gaji > G1) OR
(gaji > G2) OR
 . . OR
(gaji > Gn)

Kondisi dengan ALL menghasilkan nilai benar jika pembandingan menghasilkan nilai benar untuk setiap nilai dalam subquery.
Contoh penggunaan ALL yaitu untuk memperoleh semua pegawai yang gajinya lebih rendah daripada semua pegawai di departemen Akunting.

LATIHAN

1


Diatas adalah query untuk menampilkan last_name dari tabel employees dengan salary lebih besar dari query yang menampilkan salary dari employees dengan last_name = ‘Abel’ sehingga yang akan tampil adalah last_name yang salarynya lebih besar dari salary Abel

2




Diatas merupakan query yang berfungsi untuk menampilkan last_name, job_id dari employees dengan kriteria job_id sama dengan query yang akan menampilkan job_id dari employees dengan employee_id = 141, maka data yang akan tampil adalah last_name dan job_id yang job_idnya sama dengan employee_idnya 141 yakni employee id 141 berada pada job_id ST_CLERK sehingga semua yang memiliki field job_id sama dengan ST_CLERK akan ditampilkan

3




Diatas terdapat query dimana pada query 1 terdapat subquery sebut saja query 2 dan query 3 dimana dilakukan perbandingan AND yaitu jika semua terpenuhi maka akan ditampilkan, maka analoginya adalah


Maka data yang akan ditampilkan adalah last_name,job_id,salary dari tabel employees dengan job_id = job_id yang employee_id nya 141 AND salary lebih besar dari pegawai dengan employee_id 143, karena semua subquery terpenuhi maka akan ditampilkan data queri 1 yang memenuhi subquery2 dan subquery3.

untuk lebih lengkapnya silahkan download disini!









Tidak ada komentar:

Posting Komentar