Basis Data Tentang Query Berjenjang SubQuery
Basis Data SubQuery - Berikut adalah sedikit materi atau rangkuman tentang query berjenjang (SubQuery).
Pengertian - Query berjenjang (subquery) merupakan perintah SELECT yang berada di dalam
perintah SQL lain. Subquery sangat berguna ketika kita ingin menampilkan data
dengan kondisi yang bergantung pada data didalam tabel itu sendiri. Pengertian lainnya sebuah
query (perintah
Select) yang terdapat query lain didalamnya.
Fungsi dari subQuery -
- Menyalin data dari satu tabel ke tabel yang lainnya.
- Menghapus baris dari satu tabel berdasarkan baris dari tabel lain.
- Mengambil data dari tabel lain untuk di update ke tabel yang dituju.
- Untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui.
- Menerima data dari inline view.
- Secara default, nama-nama kolom di subquery mengacu ke nama table diklausa FROM di query lebih luar dengan mengkualifikasi nama kolom
- Saat subquery adalah salah satu dua operan dilibatkan di pembandingan, subquery harus muncul di sisi kanan pembandingan.
- Subquery tdak boleh digunakan sebagai operan di ekspresi.
- Subquery bisa diletakkan pada field list atau pada klausa WHERE atau HAVING, dimana subQuery tersebut menyediakan satu atau lebih nilai yang diperiksa.
- Didalam WHERE dan HAVING subquery memiliki tiga bentuk diantaranya:
- Expression [NOT] IN (subquery)
- Comparison [ANY|ALL|SOME] (subquery)
- [NOT] EXISTS (subquery).
- subQuery dengan ANY
- Command ANY diikuti dengan operator perbandingan memiliki arti menampilkan nilai yang sesuai dengan apapun yan dihasilkan oleh subQuery. ANY berbeda dengan IN, jika IN itu semua data, sedangkan ANY hanya beberapa data. Contoh query dasar dari sub query ANY :
SELECT nama kolom FROM namatabel WHERE kondisi opeatorperbandingan ANY (subquery);
- subQuery dengan "ALL"
- Command ALL diikuti dengan operator perbandingan digunakan memiliki arti menampilkan nilai jika perbandingan bernilai benar untuk semua data. Operator perbandingan tersebut berupa ( <, >, =, !=). Query dasar dari subQuery ALL
SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan ALL (subquery);
- subQuery dengan "IN"
- Jika operator '=' hanya digunakan untuk hasil yang tepat satu, maka jika ingin menampilkan yang memiliki hasil lebih dari satu maka dapat menggunakan perintah IN. Dan struktur query yang digunakan dalam hal ini adalah
SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan IN (subquery);
- Single Row Subquery
- Single row subquery memberikan hasil hanya satu baris pada bagian subquery. Untuk single row subquery ini yang digunakan adalah operator pembanding: , >, >=, <, <= atau <>
- Contoh:
Menampilkan data karyawan yang memiliki jabatan sama dengan Smith.
SELECT last_name, title FROM employee WHERE title = ( SELECT title FROM employee WHERE last_name = ‘Smith’ );Kita dapat menampilkan data dari query utama dengan menggunakan fungsi grup (group function) untuk menghasilkan satu baris data.Contoh:
Menampilkan data karyawan yang memiliki gaji dibawah rata-rata.
SELECT last_name, title, salary FROM employee WHERE salary < ( SELECT AVG(salary) FROM employee ); - Multiple Rows Subquery
- Multiple Row Subquery adalah subquery yang menghasilkan lebih dari satu baris data. Untuk multiple row subquery ini yang digunakan adalah operator pembanding IN, ANY atau ALL.
- Contoh:
Menampilkan data karyawan yang bekerja pada departemen Finance atau pada region 2.SELECT last_name, first_name, title FROM employee WHERE dept_id IN ( SELECT id FROM department WHERE name = ‘Finance’ OR region_id = 2 );Contoh:
Menampilkan nama, gaji, dan nomer department dari pegawai yang gajinya sama dengan gaji minimum pada suatu department.SELECT ename, sal, deptno FROMENP WHERE sal IN (SELECT MIN (sal) FROM ENP GROUP BY deptno)
Kesalahan umum dalam subquery adalah lebih dari satu baris
data dihasilkan untuk single row subquery.
Contoh:
Subquery ini menghasilkan lebih dari satu baris data dan menggunakan single row operator. Kita dapat membetulkan kesalahan ini dengan mengubah = menjadi IN.
Contoh:
Subquery ini menghasilkan lebih dari satu baris data dan menggunakan single row operator. Kita dapat membetulkan kesalahan ini dengan mengubah = menjadi IN.
SELECT last_name, first_name, title
FROM employee WHERE dept_id = ( SELECT id FROM department WHERE name = ‘Finance’
OR region_id = 2 );
Sekian rangkuman materi sub query berjenjang semoga dapat bermanfaat.
Posting Komentar