21
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
JOIN LEBIH DARI 2 TABEL
SOLUSI 1 MENGGUNAKAN KOMA DAN WHERE: SELECT o.orderNumber,c.customerName,e.firstname
FROM orders o, customers c, employees e WHERE o.customerNumber = c.customerNumber AND
c.salesRepEmployeeNumber = e.employeeNumber;
SOLUSI 2 MENGGUNAKAN JOIN ON: SELECT o.ordernumber,c.customername,e.firstname
FROM orders o JOIN customers c ON o.customerNumber = c.customerNumber JOIN employees e ON c.salesRepEmployeeNumber = e.employeeNumber;
SOLUSI 3 MENGGUNAKAN NATURAL JOIN DAN JOIN: SELECT o.ordernumber,c.customername,e.firstname
FROM orders o NATURAL JOIN customers c JOIN employees e ON c.salesRepEmployeeNumber = e.employeeNumber
22
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
SELF JOIN
• Self join adalah suatu kondisi dimana suatu tabel berelasi tabel itu sendiri.
• Dalam self join, penggunaan alias tabel PASTI digunakan. • Contoh kasus :
– Tampilan data pegawai lengkap dengan data atasannya. Atasannya berasal dari tabel yang sama.
– Perhatikan pada skema relasi ClassicModel, pada table Employees ada field reportsTo yang berelasi dengan field CustomerNumber
pada tabel yang sama.
– Bisa kita anggap bahwa kolom reportsTo merupakan kolom yang menyatakan siapa yang menjadi atasan seorang pegawai.
23
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
SELF JOIN
SOLUSI 1 MENGGUNAKAN KOMA DAN WHERE: SELECT peg.EmployeeNumber NoPegawai,
concat_ws ,peg.firstName,peg.lastName NamaPegawai, peg.reportsTo,
ats.EmployeeNumber NoAtasan, concat_ws ,ats.firstName,ats.lastName NamaAtasan
FROM employees peg, employees ats WHERE peg.reportsTo = ats.employeeNumber
SOLUSI 2 JOIN ON: SELECT peg.EmployeeNumber NoPegawai,
concat_ws ,peg.firstName,peg.lastName NamaPegawai, peg.reportsTo,
ats.EmployeeNumber NoAtasan, concat_ws ,ats.firstName,ats.lastName NamaAtasan
FROM employees peg JOIN employees ats ON peg.reportsTo = ats.employeeNumber
24
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
SELF JOIN
…
22 Rows
Pegawai 1002 Diane Murphi tidak ditampilkan karena nilai field reportsTo bernilai NULL, berarti dia adalah pegawai tertinggi tidak mempunyai atasan.
25
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OUTER JOIN
• OUTER JOIN adalah suatu join yang akan menampilkan baris hasil JOIN equi-join dilengkapi dengan baris yang tidak
mempunyai relasi di kedua tabel. • Ada tiga jenis OUTER JOIN, yaitu
– LEFT [OUTER] JOIN : menampilkan semua hasil equi join, lengkap dengan baris dari tabel kiri tabel 1 yang tidak mempunyai
relasipasangan dari tabel kanan tabel 2. Jika relasi tidak terpenuhi, maka kolom yang berasal dari tabel kanan akan diberi nilai NULL
– RIGHT [OUTER] JOIN : menampilkan semua hasil equi join, lengkap dengan baris dari tabel kanan tabel 2 yang tidak mempunyai
relasipasangan dari tabel kiritabel 1. Jika relasi tidak terpenuhi, maka kolom yang berasal dari tabel kiri akan diberi nilai NULL
– FULL [OUTER] JOIN : Baris Hasil JOIN + LEFT OUTER JOIN + RIGHT OUTER JOIN. MySQL tidak mendukung FULL OUTER JOIN, tetapi bisa
diemulasikan.
26
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
LEFT [OUTER] JOIN
Perhatikan SQL Berikut :
SQL tersebut akan menampilkan semua data pegawai lengkap dengan nama atasan. Perbedaan dengan SELF JOIN adalah
SEMUA baris di tabel kiri Employees peg akan ditampilkan walaupun tidak punya relasi ke tabel kanan Employees ats
SELECT peg.EmployeeNumber NoPegawai, concat_ws ,peg.firstName,peg.lastName NamaPegawai,
peg.reportsTo, ats.EmployeeNumber NoAtasan,
concat_ws ,ats.firstName,ats.lastName NamaAtasan
FROM employees peg LEFT JOIN
employees ats ON peg.reportsTo = ats.employeeNumber
27
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
Pegawai yang mempunyai relasi ke
tabel Atasan Baris tabel kiri yang
mempunyai relasi di tabel Kanan
Pegawai yang tidak mempunyai relasi ke
tabel Atasan Baris tabel Kiri yang
tidak punya relasi di tabel Kanan
28
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
LEFT [OUTER] JOIN
Jika anda ingin mengambil baris data dari tabel kiri yang tidak punya relasi di tabel kanan data pegawai yang tidak
mempunyai atasan, maka yang perlu ditambahkan adalah filter terhadap field yang bersumber dari tabel kanan
Employees ats yang berisi NULL.
29
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
LEFT [OUTER] JOIN
SELECT peg.EmployeeNumber NoPegawai, concat_ws ,peg.firstName,peg.lastName NamaPegawai,
peg.reportsTo, ats.EmployeeNumber NoAtasan,
concat_ws ,ats.firstName,ats.lastName NamaAtasan
FROM employees peg LEFT JOIN
employees ats ON peg.reportsTo = ats.employeeNumber
WHERE ats.employeeNumber IS NULL
30
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
RIGHT [OUTER] JOIN
Perhatikan SQL Berikut :
SQL tersebut akan menampilkan semua data pegawai lengkap dengan nama atasan. Perbedaan dengan SELF JOIN adalah
SEMUA baris di tabel kanan Employees ats akan ditampilkan walaupun tidak punya relasi ke tabel kiri Employees peg
SELECT peg.EmployeeNumber NoPegawai, concat_ws ,peg.firstName,peg.lastName NamaPegawai,
peg.reportsTo, ats.EmployeeNumber NoAtasan,
concat_ws ,ats.firstName,ats.lastName NamaAtasan
FROM employees peg RIGHT JOIN
employees ats ON peg.reportsTo = ats.employeeNumber
31
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
Pegawai Atasan yang tidak
mempunyai relasi ke tabel Pegawai
Bawahan Baris Tabel Kanan
yang tidak mempunyai relasi di
Tabel Kiri
…
32
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
RIGHT [OUTER] JOIN
Jika anda ingin baris dari tabel kanan yang tidak mempunyai relasi ke tabel kiri data pegawai yang tidak mempunyai
bawahan, maka yang perlu ditambahkan adalah filter terhadap field yang bersumber dari tabel kiri Employees peg yang
berisi NULL.
33
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
RIGHT [OUTER] JOIN
SELECT peg.EmployeeNumber NoPegawai, concat_ws ,peg.firstName,peg.lastName NamaPegawai,
peg.reportsTo, ats.EmployeeNumber NoAtasan,
concat_ws ,ats.firstName,ats.lastName NamaAtasan
FROM employees peg RIGHT JOIN
employees ats ON peg.reportsTo = ats.employeeNumber
WHERE peg.employeeNumber IS NULL
34
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
RIGHT [OUTER] JOIN
35
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
FULL OUTER JOIN
• FULL OUTER JOIN tidak disupport oleh MySQL. • Hasil suatu join FULL OUTER JOIN akan menghasilkan
baris tabel kiri yang mempunyai relasi di tabel kanan + baris tabel kiri yang tidak mempunyai relasi di tabel kanan + baris
tabel kanan yang tidak mempunyai relasi di tabel kiri
• FULL OUTER JOIN merupakan :
– Gabungan antara LEFT OUTER JOIN dengan hasil RIGHT OUTER JOIN yang tabel kirinya bernilai NULL
Atau – Gabungan antara RIGHT OUTER JOIN dengan hasil LEFT OUTER
JOIN yang tabel kanannya bernilai NULL
36
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
FULL OUTER JOIN
SELECT peg.EmployeeNumber NoPegawai, concat_ws ,peg.firstName,peg.lastName NamaPegawai,
peg.reportsTo, ats.EmployeeNumber NoAtasan,
concat_ws ,ats.firstName,ats.lastName NamaAtasan
FROM employees peg LEFT JOIN
employees ats ON peg.reportsTo = ats.employeeNumber
UNION SELECT peg.EmployeeNumber NoPegawai,
concat_ws ,peg.firstName,peg.lastName NamaPegawai, peg.reportsTo,
ats.EmployeeNumber NoAtasan, concat_ws ,ats.firstName,ats.lastName NamaAtasan
FROM employees peg RIGHT JOIN
employees ats ON peg.reportsTo = ats.employeeNumber
WHERE peg.employeeNumber IS NULL
37
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
FULL OUTER JOIN
SELECT peg.EmployeeNumber NoPegawai, concat_ws ,peg.firstName,peg.lastName NamaPegawai,
peg.reportsTo, ats.EmployeeNumber NoAtasan,
concat_ws ,ats.firstName,ats.lastName NamaAtasan
FROM employees peg RIGHT JOIN
employees ats ON peg.reportsTo = ats.employeeNumber
UNION SELECT peg.EmployeeNumber NoPegawai,
concat_ws ,peg.firstName,peg.lastName NamaPegawai, peg.reportsTo,
ats.EmployeeNumber NoAtasan, concat_ws ,ats.firstName,ats.lastName NamaAtasan
FROM employees peg LEFT JOIN
employees ats ON peg.reportsTo = ats.employeeNumber
WHERE ats.employeeNumber IS NULL
38
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
FULL OUTER JOIN
39
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
LATIHAN-LATIHAN
• Cari data pemesanan yang dilakukan oleh customer yang berasal dari negara Austria
7 Rows
40
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
LATIHAN-LATIHAN
• Tampilkan data item pemesanan OrderDetails lengkap dengan nama produk ProductName dan deskripsi jenis
produknya textDescription
2,996 Rows
41
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
LATIHAN-LATIHAN
• Tampilkan data produk yang pernah dipesan. Tampilkan kode produk, nama produk dan deskripsinya.
109 Rows
42
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
LATIHAN-LATIHAN
• Cara data customer yang belum pernah melakukan pembayaran.
24 Rows
43
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
LATIHAN-LATIHAN
• Tampilkan data pemesanan barang lengkap dengan keuntungan yang didapat
2,996 Rows
1
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
UNION
2
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
SKEMA RELASI YANG DIGUNAKAN
CLASSICMODELS
3
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CLASSICMODELS
4
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
UNION
• UNION digunakan untuk menggabungkan hasil eksekusi beberapa SQL SELECT sehingga menjadi 1 kesatuan hasil.
• Nama Kolom pertama dari SELECT yang pertama digunakan sebagai nama kolom hasil query.
• Secara default, UNION akan menghilangkan baris-baris yang duplikat.
5
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
UNION
• Tipe data dan panjang dari Kolom di SELECT pertama harus sama dengan Kolom yang bersesuaian dengan SELECT
kedua, dst.
• Jika terjadi ketidaksesuaian tipe atau panjang maka akan menggunakan tipe data dan panjang yang bisa digunakan
oleh semua tipe kolomnya. Contoh, jika nilai kolom di SELECT pertama bertipe integer dan nilai kolom di SELECT
kedua bertipe double, maka akan menggunakan tipe double.
6
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CONTOH UNION
• Kota mana saja yang terdaftar di database ClassicModels
SELECT country FROM Customers UNION
SELECT country FROM Offices;
SELECT country FROM Customers UNION DISTINCT
SELECT country FROM Offices;
=
27 Rows
7
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CONTOH UNION
• Negara mana saja yang terdaftar di database ClassicModels
SELECT country FROM Customers UNION ALL
SELECT country FROM Offices;
32 Rows
8
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
PENGURUTAN DALAM UNION
• Negara mana saja yang terdaftar di database ClassicModels
SELECT country FROM Customers UNION
SELECT country FROM Offices ORDER BY country;
27 Rows
9
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
PENGURUTAN DALAM UNION
SELECT country,city FROM Customers UNION
SELECT country,city FROM Offices ORDER BY country
97 Rows
10
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
PENGURUTAN DALAM UNION
SELECT country,city FROM Customers UNION
SELECT country,city FROM Offices ORDER BY city
97 Rows
SELECT country,city FROM Customers UNION
SELECT country,city FROM Offices ORDER BY 2
ORDER BY 2 = Urutkan berdasarkan kolom ke-2
11
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
LIMIT DALAM UNION
• 5 Negara yang terdaftar di database ClassicModels
SELECT country FROM Customers UNION
SELECT country FROM Offices ORDER BY country
LIMIT 5;
5 Rows
1
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
SUB QUERY
2
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
SKEMA RELASI YANG DIGUNAKAN
CLASSICMODELS
3
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CLASSICMODELS
4
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
SUB QUERY
• Sub Query adalah suatu query yang menjadi bagian dari suatu query.
• Sub Query digunakan untuk menangani masalah yang kompleks yang mungkin sulit untuk dilakukan hanya dengan
sebuah query.
• Menyediakan cara alternatif untuk melakukan operasi yang membutuhkan join atau union yang rumit.
5
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CONTOH KASUS 1
• Cari data produk yang harga belinya buyPrice melebihi rata-rata harga belinya.
– Query membutuhkan Sub Query karena untuk dapat mencari produk yang diinginkan, maka rata-rata harga belinya harus dicari terlebih
dahulu.
6
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CONTOH KASUS 1
SELECT ProductCode,ProductName,buyPrice FROM Products WHERE buyPrice
SELECT AVGbuyPrice FROM Products
54 Rows
Sub query bekerja untuk mencari nilai
rata-rata dari buyPrice yang akan
menjadi patokan dalam seleksi data
produk
7
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CONTOH KASUS 2
• Carilah data produk yang harga belinya sama dengan harga beli termahal.
– Query membutuhkan Sub Query karena untuk dapat mencari produk yang diinginkan, maka nilai terbesar harga belinya harus dicari
terlebih dahulu.
– Query ini bisa dilakukan dengan menggunakan ORDER BY dan LIMIT, tetapi hanya akan menghasilkan 1 baris saja. Bagaimana jika
data yang sesuai dengan kriteria lebih dari 1 baris.
8
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CONTOH KASUS 2
• Perbedaan dari kedua SQL tersebut adalah :
– Query pertama mungkin menampilkan data produk lebih dari 1 baris ketika baris yang buyprice-nya sama dengan nilai MAXbuyPrice lebih dari 1 baris.
– Qery kedua hanya akan menampilkan 1 baris saja karena ada penggunaan LIMIT. Kekurangan dari SQL ini adalah ketika ada data produk yang sama-sama
memiliki nilai sama dengan MAXbuyprice lebih dari 1 baris.
SELECT ProductCode,ProductName,buyPrice FROM Products WHERE buyPrice=
SELECT MAXbuyPrice FROM Products
SELECT ProductCode,ProductName,buyPrice FROM Products ORDER BY buyPrice DESC LIMIT 1
9
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CONTOH KASUS 3
• Carilah customer yang pernah melakukan pembayaran.
– Query tersebut membutuhkan sub query karena harus melakukan perbandingan data customer dengan data customer yang ada di tabel
pembayaran payments. Berarti data customer yang ada di tabel payments harus dicari terlebih dahulu.
10
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CONTOH KASUS 3
• Sub query bekerja untuk mencari data customer yang telah terdaftar di tabel payments sudah pernah melakukan pembayaran
SELECT CustomerNumber,CustomerName FROM Customers WHERE CustomerNumber IN
SELECT DISTINCT CustomerNumber FROM Payments
98 Rows
11
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CONTOH KASUS 4
• Carilah pegawai yang menjadi anak buah reportTo ke pegawai yang bernama
“Mary Patterson”
– Query tersebut harus membutuhkan sub query karena nomor pegawai EmployeeNumber dari Mary Patterson harus ditemukan
terlebih dahulu, kemudian dibandingkan dengan data customer.
12
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CONTOH KASUS 4
• Sub query bekerja untuk mencari EmployeeNumber pegawai yang bernama Mary Patterson.
• Query utamanya adalah mencari pegawai yang reportTo-nya ke EmployeeNumber milik Mary Patterson.
SELECT EmployeeNumber,CONCAT_WS ,FirstName,LastName FROM Employees
WHERE reportsTo=
SELECT EmployeeNumber FROM Employees WHERE CONCAT_WS ,FirstName,LastName =Mary Patterson
13
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
STRUKTUR SUBQUERY
SELECT ProductCode,ProductName,buyPrice FROM Products
WHERE buyPrice
SELECT MAXbuyPrice FROM Products
Sub Query
Outer Query
14
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
ATURAN SUB QUERY
• Dalam sebuah query boleh memiliki lebih dari 1 sub query. • Sebuah sub query boleh memiliki sub query lagi.
• Operator perbandingan yang dapat digunakan adalah =, ,
, =, =, , =, =, IN, ANY, SOME, ALL, EXISTS, NOT EXISTS
15
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CONTOH DATA
SELECT EmployeeNumber, FirstName FROM Employees
SELECT EmployeeNumber FROM Employees
WHERE OfficeCode=6
16
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OPERATOR =, , , =, =, , =, = DALAM SUB QUERY
• Syarat dalam penggunaan operator tersebut adalah sub querynya hanya boleh memiliki 1 baris.
• Jika barisnya memiliki lebih dari 1 baris akan menampilkan pesan
“Subquery returns more than 1 row”.
17
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OPERATOR =, , , =, =, , =, = DALAM SUB QUERY
• Contoh Benar
• Untuk operator boleh diganti dengan operator lain untuk mendapatkan hasil yang berbeda.
SELECT ProductCode,ProductName,buyPrice FROM Products WHERE buyPrice
SELECT AVGbuyPrice FROM Products
SELECT ProductCode,ProductName,buyPrice FROM Products WHERE buyPrice
18
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OPERATOR =, , , =, =, , =, = DALAM SUB QUERY
• Contoh Salah
• SQL di atas akan menampilkan pesan kesalahan “1242 - Subquery returns more
than 1 row
” karena mySQL tidak bisa melakukan perbandingan dengan data lebih dari 1 baris. Solusi untuk masalah ini adalah menggunakan ANY, SOME atau ALL.
SELECT ProductCode,ProductName,buyPrice FROM Products WHERE buyPrice
SELECT BuyPrice FROM Products WHERE BuyPrice100
SELECT ProductCode,ProductName,buyPrice FROM Products WHERE buyPrice
19
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OPERATOR ANY, SOME, ALL DALAM SUB QUERY
• Operator ANY, SOME dan ALL, harus diawali dengan penggunaan operator perbandingan =, , , =, =, , =, =.
• Operator ANY akan memeriksa apakah suatu nilai dari outer query sesuai dengan SALAH SATU anggota dari hasil sebuah sub
query. Kondisi sesuai ditentukan oleh operator yang ditulis sebelumnya.
• Operator SOME adalah alias dari ANY • Operator ALL akan memeriksa apakah suatu nilai dari outer query
sesuai dengan SEMUA anggota dari hasil sebuah sub query. • Sub query boleh memiliki data lebih dari 1 baris.
20
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OPERATOR ANY, SOME, ALL DALAM SUB QUERY
SELECT EmployeeNumber, FirstName FROM Employees
WHERE EmployeeNumber = ANY
SELECT EmployeeNumber FROM Employees WHERE OfficeCode=6
21
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OPERATOR ANY, SOME, ALL DALAM SUB QUERY
• Menghasilkan 0 Rows, karena tidak ada EmployeeNumber yang sama dengan semua employeeNumber yang ada di
sub query.
SELECT EmployeeNumber, FirstName FROM Employees
WHERE EmployeeNumber = ALL
SELECT EmployeeNumber FROM Employees WHERE OfficeCode=6
22
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OPERATOR ANY, SOME, ALL DALAM SUB QUERY
SELECT EmployeeNumber, FirstName FROM Employees
WHERE EmployeeNumber ANY
SELECT EmployeeNumber FROM Employees WHERE OfficeCode=6
23
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OPERATOR ANY, SOME, ALL DALAM SUB QUERY
SELECT EmployeeNumber, FirstName FROM Employees
WHERE EmployeeNumber ALL
SELECT EmployeeNumber FROM Employees WHERE OfficeCode=6
24
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OPERATOR IN DALAM SUB QUERY
• Operator IN akan memeriksa apakah suatu nilai di outer query ada dalam sebuah hasil sub query.
• Operator IN bisa disamakan dengan operator “= ANY” • Lawan hasil dari operasi IN adalah NOT IN.
• Operator NOT IN bisa disamakan dengan “ ALL” • Sub query boleh memiliki data lebih dari 1 baris.
25
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OPERATOR IN DALAM SUB QUERY
SELECT ProductCode,ProductName,buyPrice FROM Products WHERE ProductCode IN
SELECT ProductCode FROM Products WHERE BuyPrice100
SELECT ProductCode,ProductName,buyPrice FROM Products WHERE ProductCode IN
26
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
OPERATOR IN DALAM SUB QUERY
SELECT ProductCode,ProductName,buyPrice FROM Products WHERE ProductCode NOT IN
SELECT ProductCode FROM Products WHERE BuyPrice100
SELECT ProductCode,ProductName,buyPrice FROM Products WHERE ProductCode NOT IN
27
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
PERBANDINGAN DENGAN LEBIH DARI 1 KOLOM PADA SUB QUERY
• Perbandingan banyak kolom dimungkinkan dengan menuliskan field-field yang akan dicocokkan dalam sebuah
tanda kurung .
• Untuk lebih jelas, lihat contoh di slide berikutnya.
28
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
PERBANDINGAN DENGAN LEBIH DARI 1 KOLOM PADA SUB QUERY
• Mencari pegawai yang sekantor dan seatasan dengan pegawai yang bernomor 1370
SELECT OfficeCode,reportsTo,EmployeeNumber,FirstName FROM Employees
WHERE
OfficeCode ,
reportsTo =
SELECT OfficeCode
, reportsTo
FROM Employees WHERE employeeNumber=1370
29
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CORRELATED SUBQUERY
• Sebuah correlated subquery adalah suatu subquery yang memiliki sebuah reference ke tabel yang juga menjadi outer
query.
• Subquery boleh ditempatkan di daftar kolom atau dalam WHERE
30
Oleh : Andri Heryandi, S.T., M.T. Teknik Informatika 2009 – Universitas Komputer Indonesia
CORRELATED SUBQUERY
SELECT e.EmployeeNumber
,e.FirstName, SELECT COUNT FROM
Employees e2 WHERE
e.EmployeeNumber =