DASAR TEORI
SQL Subquery
Subquery
atau query batin atau query bersarang adalah query dalam query. Subquery A
biasanya ditambahkan dalam Klausul MANA dari pernyataan sql. Sebagian besar
waktu, subquery digunakan ketika Anda tahu bagaimana untuk mencari nilai
menggunakan pernyataan SELECT, tetapi tidak tahu nilai yang tepat dalam
database.
Subqueries
adalah cara alternatif kembali data dari beberapa tabel.
Subqueries
dapat digunakan dengan pernyataan sql berikut bersama dengan operator
perbandingan seperti =, <,>,> =, <= Dll
Subquery Contoh:
1) Biasanya, subquery harus kembali hanya satu record, tapi
kadang-kadang juga dapat kembali beberapa catatan bila digunakan dengan
operator seperti IN, TIDAK DI di mana klausa. Permintaan akan seperti,
SELECT
first_name, last_name, subject
FROM
student_details
WHERE
games NOT IN ('Cricket', 'Football');
Outputnya akan sama dengan:
first_name
|
last_name
|
subject
|
-------------
|
-------------
|
----------
|
Shekar
|
Gowda
|
Badminton
|
Priya
|
Chandra
|
Chess
|
2) Mari kita mempertimbangkan tabel student_details yang telah kami
gunakan sebelumnya. Jika Anda tahu nama siswa yang belajar mata pelajaran ilmu
pengetahuan, Anda bisa mendapatkan id mereka dengan menggunakan query ini di
bawah ini,
SELECT
id, first_name
FROM
student_details
WHERE
first_name IN ('Rahul', 'Stephen');
tetapi, jika Anda tidak tahu nama mereka, maka untuk mendapatkan id
mereka Anda perlu menulis query dengan cara ini,
SELECT
id, first_name
FROM
student_details
WHERE
first_name IN (SELECT first_name
FROM
student_details
WHERE
subject= 'Science');
Output:
id
|
first_name
|
--------
|
-------------
|
100
|
Rahul
|
102
|
Stephen
|
Dalam pernyataan sql di atas, pertama inner query diproses terlebih
dahulu dan kemudian permintaan luar diproses.
3) Subquery dapat digunakan dengan pernyataan INSERT untuk
menambahkan baris data dari satu atau lebih tabel ke meja lain. Mari kita
mencoba untuk mengelompokkan semua siswa yang belajar Matematika dalam tabel
'maths_group'.
INSERT
INTO maths_group(id, name)
SELECT
id, first_name || ' ' || last_name
FROM
student_details WHERE subject= 'Maths'
4) Sebuah subquery dapat digunakan dalam laporan SELECT sebagai
berikut. Mari kita menggunakan produk dan meja order_items didefinisikan dalam
bagian sql_joins.
select
p.product_name, p.supplier_name, (select order_id from order_items where
product_id = 101) as order_id from product p where p.product_id = 101
product_name
|
supplier_name
|
order_id
|
------------------
|
------------------
|
----------
|
Television
|
Onida
|
5103
|
Fungsi Where
Where digunakan untuk mengekstrak
hanya catatan-catatan yang memenuhi kriteria tertentu.
SQL WHERE Syntax
SELECT nama_kolom,nama_kolom
FROM
nama_tabel
WHERE
nama_kolom operator hasil;
CONTOH SINTAK
A. Scalar
subquery :
select*
from mahasiswa where jeniskelamin= (select jeniskelamin from mahasiswa where nama='wati');
B. Mulple
row subquery dengan operator IN
select kode_dos, nama_dos
from dosen
where kode_dos in(10,11,12);
C. Multiple
row subquery dengan operator any
alter table matakuliah add
kode_dos numeric
update matakuliah set kode_dos =
11 where kode_mk = 'PTI447'
update matakuliah set kode_dos =
11 where kode_mk = 'TIK343'
update matakuliah set kode_dos =
10 where kode_mk = 'PTI333'
update matakuliah set
kode_dos = 33 where kode_mk = 'TIK123'
update matakuliah set
kode_dos = 10 where kode_mk = 'TIK333'
update matakuliah set
kode_dos = 12 where kode_mk = 'PTI123'
update matakuliah set
kode_dos = 99 where kode_mk = 'PTI777'
select*from matakuliah;
D. Mendapatkan
data berikut
select
kode_mk, nama_mk, sks, semester, kode_dos from matakuliah where sks > (1)
E. Mendapatkan
data dengan ketentuan menampilkan kolom kode_mk, nama_mk,sks,semester, kode_dos
dimana kode_mk adalah PTI1447
select
kode_mk, nama_mk, sks, semester, kode_dos
from
matakuliah
where kode_mk in ('PTI447')
B.
MEMBUAT SUBQUERY SESUAI TOPIK (SQL dan ORACLE)
1. Scalar subquery
MELALUI SQL 2000:
Scalar subquery
Masukan query
select*
from TRANSAKSI where DOWN_PAYMENT=(select DOWN_PAYMENT from TRANSAKSI
where ID_TRANSAKSI='tr1');
MELALUI ORACLE:
select *
from TRANSAKSI where DOWN_PAYMENT in (select DOWN_PAYMENT from TRANSAKSI
where ID_TRANSAKSI= 'tr1');
2. Multiple row subquery
MELALUI SQL 2000:
Masukan query
select JUMLAH_KAMAR, JENIS_KAMAR
from KAMAR
where JUMLAH_KAMAR in(2,1);
MELALUI ORACLE:
select JUMLAH_KAMAR, JENIS_KAMAR
from KAMAR
where JUMLAH_KAMAR in(2,1);
No comments:
Post a Comment