Tipe-Tipe Subquery (Query Bersarang)

Sebelum kita mulai, kita harus tau apa itu Subquery atau Query Bersarang berserta tipe-tipe nya. Query Bersarang adalah sebuah query yang didalamnya (biasanya disebut dengan Subquery) ditempatkan query yang lain. Menurut Conolly dan Begg (2015), Subquery dapat dibedakan menjadi 3 tipe, antara lain sebagai berikut :

  1. Subquery Skalar, Tipe ini berguna menghasilkan nilai tepat satu kolom dan satu baris.
  2. Subquery Baris, Tipe ini berfungsi untuk menghasilkan banyak kolom dan satu baris.
  3. Subquery Tabel, Tipe ini berfungsi untuk menghasilkan satu kolom atau lebih dan terdiri dari banyak baris.
Pada kali ini kita akan membuat 2 tabel, yaitu tabel orders dan tabel employees, Tabel-tabel tersebut akan kita gunakan pada contoh tipe-tipe yang akan digunakan. Struktur dan isi dari tabel tersebut adalah sebagai berikut.

Tabel Orders


Tabel Employees


Tipe Pertama, Subquery Dengan Hasil Satu Sel
Pada bagian ini kita akan menampilkan OrderID, CustID, OrderDate, RequiredDate, ShippedDate pada tabel Orders dengan berdasarkan nama depan (First Name) 'Margaret'. Jika kita ingin menyambungkan hasil dari 2 tabel menjadi satu sel maka kita harus mempunyai Relasi, pada tabel tersebut mempunyai relasi, yaitu EmpID. maka kita harus mengetik syntax sebagai berikut "Select OrderID, CustID, OrderDate, RequiredDate, ShippedDate from orders where EmpID =(SELECT EmpID FROM Employees WHERE FirstName = 'Margaret');" Hasil syntax akan muncul seperti berikut.


Tipe Kedua, Menggunakan Subquery Skalar dan Fungsi Agregasi
Pada bagian ini kita akan mencampurkan fungsi Subquery Skalar dan Agresasi, kita akan menampilkan semua data yang ada di tabel employees dengan berdasarkan nilai Salary lebih besar dari nilai rata-rata dari Salary. Maka syntax akan seperti berikut "Select*from employees where Salary> (Select Avg(Salary) From employees);" Hasil syntax akan muncul seperti berikut.


Tipe Ketiga, Menggunakan Subquery Tabel dengan Statement IN
Pada bagian ini kita akan menggunakan Statement IN sebagai penentu kriteria yang terdiri dari banyak nilai dan menggunakan Subquery tabel. kali ini kita menampilkan semua data dari tabel employees berdasarkan EmpID dan menggunakan Statement IN. Maka syntax akan seperti berikut "Select*from employees where EmpID IN(Select EmpID from orders);" Hasil syntax akan muncul seperti berikut.


Tipe Keempat, Menggunakan Subquery Tabel dengan Statement ANY/SOME
Pada Bagian ini kita akan menggunakan ANY/SOME digunakan dalam percabangan dengan ANY/SOME akan bernilai TRUE maka Subquery yang terpenuhi oleh kondisi yang diberikan. pada bagian ini kita akan menampilkan semua data dari employes yang berdasarkan Salary lebih besar dari percabangan Some dan berdasarkan title sama dengan 'Sales Rep.' Maka syntax akan digunakan seperti berikut "Select*from employees where Salary > SOME (select Salary from employees where Title ='Sales Rep.'); " Hasil syntax akan muncul seperti berikut.


Tipe Kelima, Menggunakan Subquery Tabel dengan Statement ALL
Statement ALL digunakan dalam sebuah pengujian yang akan bernilai TRUE maka semua nilai kriteria yang diberikan.  Tipe ini sama dengan tipe 3 dan 4 beda nya hanya kita menggunakan Stetement ALL. Maka syntax yang digunakan adalah "Select*from employees where Salary > ALL (select Salary from employees where Title ='Sales Rep.'); " Dan hasil nya akan seperti berikut.


Tipe Keenam, Menggunakan Subquery Tabel dengan Statement Group By
Pada bagian ini kita akan menggunakan Subquery, IN berserta Group by. kita akan menampilkan semua data dari employees berdasarkan EmpID dengan menggunakan Stetement IN dan EmpID dari orders berdasarkan group by EmpID, Having count dari semua nya besar dari 2. Maka syntax yang digunakan adalah " Select*from employees WHERE EmpID IN (select EmpID frpm Orders GROUP BY EmpID HAVING Count(*) >=2);" Dan hasil nya akan seperti berikut.


Sekian dari penjelasan saya, jika akan pertanyaan silahkan komen dibawah. Terima kasih 😉

Komentar

Postingan populer dari blog ini

Cara Menggunakan SUM, AVG, MAX, MIN pada CMD

Cara Menghitung Jumlah Record Dengan Menggunakan CMD

Glow Effect di photoshop