Sunday, July 20, 2014

SUBQUERY



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