Tuesday, July 26, 2011

PBD pert 11

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;

Comments :

0 komentar to “PBD pert 11”


Post a Comment