SUBQUERY
-->BENTUK QUERY YG TERLETAK DALAM QUERY YG LAIN ATAU LEBIH MUDAHNYA SELECT DIADALAM SELECT.
UNTUK MEMPRAKTEKKAN SUBQUERY BUAT DUA TABEL
1. KARYAWAN : ID_KAR, NAMA, ALAMAT, GOLONGAN, STATUS, JK
2. GOLONGAN : ID_GOL, GOLONGAN, GAJI
KEMUDIAN ISIKAN DATANYA MINIMAL 5
-------------- MEMBUAT TABEL KARYAWAN ----------------
mysql> create table karyawan
-> (id_kar int not null primary key auto_increment,
-> nama varchar(20), alamat varchar(20), golongan char(2),
-> status varchar(20), JK CHAR(2));
--------------- MEMBUAT TABEL GOLOGAN ----------------
mysql> create table golongan
-> (id_gol int not null primary key auto_increment,
-> golongan char(2), gaji double);
--------------- MENGISI DATA KE TABEL KARYAWAN -------
mysql> insert into karyawan
-> (nama, alamat, golongan, status, jk) values
-> ('antie','sei.panas','A','Lajang','PR'),
-> ('budi','bengkong','B','Lajang','LK'),
-> ('tika','nagoya','B','Lajang','LK'),
-> ('andi','jodoh','C','Menikah','PR'),
-> ('slamet','sengkuang','A','Menikah','LK');
--------------- MENGISI DATA KE TABEL GOLONGAN -------
mysql> insert into golongan
-> (golongan, gaji) values
-> ('A',1000000), ('B',2000000),
-> ('C',3000000), ('D',4000000),
-> ('E',5000000), ('F',6000000);
SUBQUERY DASAR --------------------------------------
1. MENAMPILKAN FIELD GOLONGAN DAN GAJI PALING BESAR DARI TABEL GOLONGAN
COBA LAKUKAN DENGAN PERINTAH BERIKUT (TANPA SUB QUERY)
mysql> SELECT GOLONGAN, MAX(GAJI) FROM GOLONGAN;
KEMUDIAN PERINTAH BERIKUT DENGAN SUBQUERY
mysql> SELECT GOLONGAN, GAJI FROM GOLONGAN
-> WHERE GAJI =
-> (SELECT MAX(GAJI) FROM GOLONGAN);
APA HASILNYA???
SUBQUERY BARIS TUNGGAL ------------------------------
mysql> SELECT GOLONGAN, GAJI FROM GOLONGAN
-> WHERE GAJI =
-> (SELECT GAJI FROM GOLONGAN WHERE GAJI > 3000000);
APA YG TERJADI?
UNTUK MENGATASINYA MAKA PERLU DIBUAT SEPERTI DIATAS
mysql> SELECT GOLONGAN, GAJI FROM GOLONGAN
-> WHERE GAJI =
-> (SELECT MAX(GAJI) FROM GOLONGAN);
SUBQUERY BARIS GANDA ------------------------------
UHTUK MENGGUNAKAN SUBQUERY BARIS GANDA HARUS MENGGUNAKAN KALUSA
1. IN
2. EXISTS
3. ANY
4. ALL
IN--------------
mysql> SELECT GOLONGAN, GAJI FROM GOLONGAN
-> WHERE GAJI IN
-> (SELECT GAJI FROM GOLONGAN WHERE GAJI > 3000000);
EXISTS----------
mysql> SELECT GOLONGAN, GAJI FROM GOLONGAN
-> WHERE EXISTS
-> (SELECT GOLONGAN FROM KARYAWAN
-> WHERE GOLONGAN = GOLONGAN.GOLONGAN);
mysql> SELECT GOLONGAN, GAJI FROM GOLONGAN
-> WHERE NOT EXISTS
-> (SELECT GOLONGAN FROM KARYAWAN
-> WHERE GOLONGAN = GOLONGAN.GOLONGAN);
ENY--------------
UNTUK MENGGUNAKAN ANY MAKA HARUS MENGGUNAKAN OPERATOR PEMBANDING (<,>,=)
mysql> SELECT ID_KAR, NAMA FROM KARYAWAN
-> WHERE GOLONGAN = ANY
-> (SELECT GOLONGAN FROM GOLONGAN);
ALL-------------
mysql> SELECT ID_KAR, NAMA FROM KARYAWAN
-> WHERE GOLONGAN > ALL
-> (SELECT GOLONGAN FROM GOLONGAN);
SUBQUERY PADA EKSPRESI CASE----------------------
mysql> SELECT ID_KAR, NAMA, CASE
-> WHEN GOLONGAN =
-> (SELECT GOLONGAN FROM GOLONGAN
-> WHERE GOLONGAN = 'F')
-> THEN 'BOSS'
-> WHEN GOLONGAN = (SELECT GOLONGAN FROM GOLONGAN
-> WHERE GOLONGAN = 'E')
-> THEN 'HAMPIR BOS'
-> ELSE 'ANAK BUAH'
-> END AS 'JABATAN'
-> FROM KARYAWAN;
Subscribe to:
Post Comments (Atom)
Comments :
0 komentar to “PBD pert 11”
Post a Comment