DML JOIN

Masukan data/record berikut ke database Sistem_Pemesanan dan sesuaikan tabelnya!

1. Tabel Pelanggan

Syntaks : 

-> /*Table structure for table pelanggan */
-> DROP TABLE IF EXISTS pelanggan;
-> CREATE TABLE pelanggan (
-> id_pelanggan varchar(6) NOT NULL,
-> nm_pelanggan varchar(40) NOT NULL,
-> alamat text NOT NULL,
-> telepon varchar(20) NOT NULL,
-> email varchar(50) NOT NULL,
-> PRIMARY KEY (id_pelanggan)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1 CHECKSUM=1
-> DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;

MariaDB [Sistem_Pemesanan]> insert into pelanggan values
-> ('UAA001','Abiyasa','Ngastino','08111222333','abiyasa@almaata.ac.id'),
-> ('UAA002','Baladewa','Madura','08222333444','baladewa@almaata.ac.id'),
-> ('UAA003','Cakil','Goa','08333444555','cakil@almaata.ac.id'),
-> ('UAA004','Dasamuka','Ngalengka','08444555666','dasamuka@almaata.ac.id'),
-> ('UAA005','Ekawalaya','Nishada','08555666777','ekawalaya@almaata.ac.id');


Tabel Pelanggan.


2. Tabel Pesan

Syntaks :

-> /*Table structure for table pesan */
-> DROP TABLE IF EXISTS pesan;
-> CREATE TABLE pesan (
-> id_pesan int(5) NOT NULL auto_increment,
-> id_pelanggan varchar(6) NOT NULL,
-> tgl_pesan date NOT NULL,
-> PRIMARY KEY (id_pesan),
-> KEY id_pelanggan (id_pelanggan),
-> CONSTRAINT pesan_ibfk_1 FOREIGN KEY (id_pelanggan)
-> REFERENCES pelanggan (id_pelanggan)
-> ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;


MariaDB [Sistem_Pemesanan]> insert into pesan values
-> ('1','UAA001','2020-10-28'),
-> ('2','UAA002','2020-10-29'),
-> ('3','UAA002','2020-10-30'),
-> ('4','UAA003','2020-10-31'),
-> ('5','UAA004','2020-10-31');

Tabel Pesan.


3. Tabel Produk

Syntaks :

-> /*Table structure for table produk */
-> DROP TABLE IF EXISTS produk;
-> CREATE TABLE produk (
-> id_produk varchar(6) NOT NULL,
-> nm_produk varchar(30) NOT NULL,
-> satuan varchar(10) NOT NULL,
-> harga decimal(10,0) NOT NULL default '0',
-> stock int(3) NOT NULL default '0',
-> PRIMARY KEY (id_produk)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;


MariaDB [Sistem_Pemesanan]> insert into produk values
-> ('MIE001','Indomie Goreng','PCS','2000','100'),
-> ('MIE002','Sarimi Goreng','PCS','1900','200'),
-> ('ATK001','Pensil 2B','PCS','5000','50'),
-> ('ATK002','Bolpoin Standart','PCS','7500','100');

Tabel Produk.


4. Tabel Faktur

Syntaks :

-> /*Table structure for table faktur */
-> DROP TABLE IF EXISTS faktur;
-> CREATE TABLE faktur (
-> id_faktur varchar(6) NOT NULL,
-> id_pesan int(5) NOT NULL,
-> tgl_faktur date NOT NULL,
-> PRIMARY KEY (id_faktur),
-> KEY id_pesan (id_pesan),
-> CONSTRAINT faktur_ibfk_1 FOREIGN KEY (id_pesan)
-> REFERENCES pesan (id_pesan)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;


MariaDB [Sistem_Pemesanan]> insert into faktur values
-> ('INV001','1','2020-10-28'),
-> ('INV002','2','2020-10-29'),
-> ('INV003','3','2020-10-30'),
-> ('INV004','4','2020-10-31');

Tabel Faktur.



JOIN :

1. Menggunakan Where (SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan FROM pelanggan, pesan WHERE pelanggan.id_pelanggan=pesan.id_pelanggan;)

1.


2. Menggunakan Inner Join (SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan FROM pelanggan INNER JOIN pesan ON pelanggan.id_pelanggan=pesan.id_pelanggan;)

2.


3. Gabungkan tabel pesan dan faktur menggunakan Where dan Inner Join.
  • SELECT pesan.id_pesan, pesan.tgl_pesan, faktur.id_faktur FROM pesan, faktur WHERE pesan.id_pesan=faktur.id_pesan;


  • SELECT pesan.id_pesan, pesan.tgl_pesan, faktur.id_faktur FROM pesan INNER JOIN faktur ON pesan.id_pesan=faktur.id_pesan;




OUTER JOIN :

1. Menggunakan Left (SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan FROM pelanggan LEFT JOIN pesan ON pelanggan.id_pelanggan=pesan.id_pelanggan;)

1.

Penggunaan left join akan menampilkan juga data pelanggan dengan id UAA005, walaupun pelanggan tersebut belum pernah bertransaksi. Dan pada kolom id_pesan dan tgl_pesan untuk pelanggan UAA005 isinya NULL, artinya di tabel kanan (pesan) pelanggan tersebut tidak ada.


2. Menggunakan Right (SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan FROM pelanggan RIGHT JOIN pesan ON pelanggan.id_pelanggan=pesan.id_pelanggan;)

2.

Sedangkan dengan right join, tabel yang menjadi acuan adalah tabel sebelah kanan (tabel pesan), jadi semua isi tabel pesan akan ditampilkan. Jika data pelanggan tidak ada di tabel pelanggan, maka isi tabel pesan tetap ditampilkan.


                        Menggabungkan 3 Tabel

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan, faktur.id_faktur FROM pelanggan, pesan, faktur WHERE pelanggan.id_pelanggan=pesan.id_pelanggan AND pesan.id_pesan=faktur.id_pesan;





Komentar

Postingan populer dari blog ini

DATA MANIPULATION LANGUAGE (DML)

MEMBUAT DATABASE KASIR & TABEL PENJUALAN MENGGUNAKAN MYSQL DENGAN MARIADB DI ANDROID VIA TERMUX

DML SELECT FUNCTION