Hosting Gratis Bandwidth Besar Hosting Gratis Bandwidth Besar Hosting Gratis Bandwidth Besar Hosting Gratis Bandwidth Besar Hosting Gratis Bandwidth Besar Hosting Gratis Bandwidth Besar

Selasa, 26 Juli 2011

Pengertian Sub Query

Pengertian Sub Query
Merupakan query yang terletak dalam query yang lain.
Contoh :
Akan ditampilkan nama pegawai yang mempunyai gaji paling besar :

select nama from pegawai where sal = (select max(gaji) from pegawai);

Operator Exists
Merupakan jenis operator boolean, yang mengahasilkan nilai benar (true) atau salah (false). Operator exists akan memberikan nilai benar (true) kalau sub query menghasilkan paling tidak sebuah baris / record.
Contoh :
Akan ditampilkan daftar nama pegawai yang sudah mempunyai departemen.

select nama from pegawai where exists (select*from departemen where id_departemen = pegawai.id_departemen);
Keterangan :Perintah pada sub query diatas berisi pengecekan id_departemen pada tabel pegawai apakah ada?.

Contoh 2 :
Akan ditampilkan daftar nama pegawai yang tidak mempunyai departemen :

select nama from pegawai where not exists (select*from departemen where id_departemen = pegawai.id_departemen);
Keterangan :Perintah pada sub query diatas sama dengan contoh 1, hanya ditambahkan dengan not sebelum exists untuk pengecekan id_departemen di tabel pegawai apakah tidak ada?.

Operator Any(Some)
Operator Any (some) hampir sama penggunaannya seperti Exists. Tetapi operator relasi yang digunakan biasanya selain = (sama dengan). hal tersebut disebabkan apabila operator relasi = yang digunakan, maka sebetulnya fungsi operator Any (some) sama seperti operator IN, sehingga kondisi seperti itu tidak dianjurkan karena lebih mudah pemahamannya apabila menggunakan operator IN.
Contoh :
Akan menampilkan daftar nama pegawai dan gaji yang gajinya tidak paling sedikit :

select nama, gaji from pegawai where gaji > any (select gaji from pegawai);

Operator All
Operator all digunakan untuk melakukan pembandingan dengan sub query. Kondisi dengan all menghasilkan nilai benar jika pembandingan menghasilkan benar untuk setiap nilai dalam sub query.
Contoh :
Akan menampilkan nama dan gaji pegawai yang gajinya lebih rendah daripada semua pegawai yang pekerjaannya 'SALESMAN' :

select nama where gaji < all (select gaji from pegawai where pekerjaan = 'SALESMAN');
Sub query (seubselect) hanya dapat digunakan untuk MySQL versi 3.24, Sehingga parintah-perintah diatas tidak dapat dijalankan di MySQL ini(versi 3.23). Tetapi, dengan menggunakan option LEFT JOIN, masalah-masalah diatas dapat diselesaikan. Contoh :
select * from score where event_id in (select even_id from even where type = 'T');
Apabila dituliskan dengan cara lain menjadi :
select score.* from score, event where score.even_id = even.even_id and type = 'T';
Contoh 2 :
select nama from pegawai where gaji = (select max(gaji) from pegawai);
Apabila dituliskan dengan cara lain menjadi :
select max(gaji) from pegawai;
select nama from pegawai where gaji = 5000;
Contoh 3 :
select*from student where student_id not in (select student_id from absence);
Apabila dituliskan dengan cara LEFT JOIN menjadi :
select student.* from student left join absence on student.student_id = absence.student_id where absence.student_id is null;

0 komentar:

Posting Komentar