Monday, March 11, 2013

MySQL Sub Query

1.   Subquery adalah perintah SELECT yang berada di dalam perintah SELECT yang lain.
2.   MySQL mendukung konsep subquery mulai versi 4.1. Contoh subquery adalah
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2)
Pada contoh tersebut,  SELECT * FROM t1 ... adalah query utama/outer query dan (SELECT column1 FROM t2) adalah subquery. Subquery bersifat nested di dalam query utama. Subquery dapat dibuat secara bertingkat sampai 32 tingkat. Subquery harus dituliskan didalam tanda kurung.

3.   Beberapa keuntungan menggunakan subquery adalah :
a.   Memungkinkan membuat query yang terstruktur, sehingga memudahkan pemisahan masing-masing bagian dari perintah/query yang dibuat.
b.   Sebagai alternatif menggantikan query yang memerlukan JOIN dan UNION yang kompleks.
c.   Query menjadi lebih mudah dibaca dan dikoreksi, memenuhi kaidah SQL ``Structured Query Language.''

4.   Sebuah subquery memberikan beberapa kemungkinan hasil, diantaranya
a.   Sebuah nilai tunggal (scalar) è scalar subquery
b.   Sebuah baris è row subquery
c.   Sebuah kolom ataupun è coloumns subquery
d.   sebuah tabel. è table subquery
Masing-masing tipe subquery (berdasarkan nilai yang dihasilkan) tersebut, dapat digunakan  pada konteks tertentu yang sesuai.

5.  Beberapa batasan dalam membuat subquery :
a. Outer query dapat berupa salah satu dari : SELECT, INSERT, UPDATE, DELETE, SET, or DO.
b. Subquery dapat mengandung opsi-opsi yang mendukung SELECT misalnya DISTINCT, GROUP BY, ORDER BY, LIMIT, joins, index hints, UNION, komentar, fungsi, dll.

6.   Sintaks subquery secara umum adalah :
SELECT kolom1 FROM Tabel WHERE kolom2 [Operator Pembandingan] (SELECT kolom1 FROM Tabel WHERE [Condition])
[Operator Pembandingan] dapat berupa =, >, <, >=, <= Ataupun  LIKE, ANY, SOME, ALL, IN, NOT IN dll 

Contoh Sub Query
SELECT M.Nama, B.Judul, B.Penulis, B.Jumlah FROM Mahasiswa M, Pinjam P, Buku B WHERE (M.Nim=P.Nim and P.kode_buku = B.kode_buku) AND jumlah=(SELECT Max(jumlah) FROM `buku`)

SELECT M.Nama, B.Judul, B.Penulis, B.Jumlah FROM Mahasiswa M JOIN  Pinjam P USING(Nim) JOIN Buku B using(kode_buku) WHERE jumlah= ( SELECT Max(jumlah) FROM `buku` )

SELECT Judul, Penulis, Jumlah FROM `buku` WHERE jumlah= ( SELECT Max(jumlah) FROM `buku` ) UNION SELECT Judul, Penulis, Jumlah FROM `buku` WHERE jumlah= ( SELECT Min(jumlah) FROM `buku` )

 (Bandingkan d dengan e)
SELECT P.kode_prodi, P.nama_prodi from Prodi P JOIN Fakultas F using(kode_fak) where F.Lokasi=’Kampus  III’

SELECT kode_prodi, nama_prodi FROM prodi as P WHERE kode_fak IN (SELECT kode_fak from Fakultas as F where Lokasi=’Kampus  III’)

 (Bandingkan f dengan g)
SELECT F.* FROM Fakultas F LEFT JOIN Prodi P USING (kode_fak) WHERE P.kode_prodi is NULL

SELECT fakultas.* FROM  Fakultas WHERE kode_fak <> ALL(SELECT  kode_fak from prodi)

 (Bandingkan h dengan i)
SELECT DISTINCT F.* FROM Fakultas F LEFT JOIN Prodi P USING (kode_fak) WHERE P.kode_prodi  is NOT NULL

SELECT * FROM  Fakultas WHERE kode_fak = ANY(SELECT  kode_fak from prodi)

1 comments:

  1. top article terima kasih ya,
    http://itkomputer.com

    ReplyDelete

 
Copyright © . Only-me - Posts · Comments
Theme Template by BTDesigner · Powered by Blogger