31
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CORRELATED SUBQUERY
SELECT e.EmployeeNumber
,e.FirstName FROM
Employees e WHERE SELECT COUNT FROM
Employees e2 WHERE
e.EmployeeNumber =
e2.reportsTo 3
32
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
EXISTS DAN NOT EXISTS
• EXISTS digunakan untuk memeriksa apakah subquery memiliki baris atau tidak. Jika minimal ada 1 baris walaupun
hanya berisi NULL, maka akan bernilai TRUE
• NOT EXISTS adalah kebalikan dari EXISTS.
33
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
EXISTS DAN NOT EXISTS
Akan menampilkan semua data employee karena subquerynya bernilai TRUE.
SELECT EmployeeNumber, FirstName FROM Employees
WHERE EXISTSSELECT FROM Employees
WHERE OfficeCode=1
34
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
EXISTS DAN NOT EXISTS
Tidak akan menampilkan semua data employee karena subquerynya bernilai FALSE.
SELECT EmployeeNumber, FirstName FROM Employees
WHERE EXISTSSELECT FROM Employees
WHERE OfficeCode=99
35
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
EXISTS DAN NOT EXISTS
Akan menampilkan semua data employee karena subquerynya bernilai TRUE.
SELECT EmployeeNumber, FirstName FROM Employees
WHERE NOT EXISTSSELECT FROM Employees
WHERE OfficeCode=99
36
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
[NOT] EXISTS CORRELATED SUBQUERY
• Biasanya penggunaan [NOT] EXISTS selalu melibatkan correlated subquery.
• Query diatas akan menampilkan semua pegawai yang memiliki bawahan subquerynya menghasilkan baris
SELECT e.EmployeeNumber
,e.FirstName FROM
Employees e WHERE EXISTSSELECT FROM
Employees e2 WHERE
e.EmployeeNumber =
e2.reportsTo
1
NULL
M EN GESKPOR D ATA D ARI SEBUAH TABEL
Berikut ini sint aks pernyat aan SELECT pada pert em uan sebelum nya dengan t am bahan opsi:
select st at em ent : : = SELECT
[ select opt ion [ select opt ion ...] ] { | select list }
[ export definit ion ] [
FROM t able reference [ { , t able reference } ...] [ WHERE expr ession [ { operat or ex pression } ...] ]
[ GROUP BY group by definit ion ] [ HAVI NG
expression [ { operat or
expression } ...] ] [ ORDER BY order by definit ion ]
[ LI MI T [ offset ,] row count ] [ PROCEDURE procedur e nam e [ argum ent [ { , ar gum ent } .. .] ] ]
[ { FOR UPDATE} | { LOCK I N SHARE MODE} ] ]
export definit ion : : = I NTO OUTFI LE ‘ filenam e ’ [ ex port opt ion [ export opt ion ] ]
| I NTO DUMPFI LE ‘ filenam e ’ export opt ion : : =
{ FI ELDS [ TERMI NATED
BY ‘ value ’]
[ [ OPTI ONALLY] ENCLOSED BY ‘ value ’] [ ESCAPED BY ‘ v alue ’] }
| { LI NES [ STARTI NG BY ‘ value ’]
[ TERMI NATED BY
‘ value ’] }
Buat lah t abel CD dengan scr ipt sebagai berikut :
CREATE TABLE CD Kode SMALLI NT NOT NULL PRI MARY KEY,
Nam aCD VARCHAR 50
NOT NULL,
St ok SMALLI NT UNSI GNED NOT NULL, Kat egori
VARCHAR 20 ;
I sikan t abel CD dengan dat a sebagai berikut : Kode
Nam aCD St ok
Kat egori 101 Bloodshot
10 Rock
102 New Orleans Jazz
17 Jazz
103 Music for Ballet Class
9 Classical
104 Music for Solo Violin
24 105 Mississippi
Blues 2
Blues 106
Mud on t he Tires 12
Count ry 107 The
Essence 5
New Age 108
The Magic of Sat ie 42
Classical 109 La
Bohem e 20
Opera 110 Ain’t
Ever Sat isfied
23 Count ry
111 Live in
Paris 18
Jazz 112
Richland Wom an Blues 22
Blues 113 St ages
42 Blues