Pada tutorial sebelumnya kita telah belajar tentang bassic Mysql bagian 1, tentang Create Read Update Delete.
SQL merupakan salah satu bahasa program yang wajib dikuasai oleh developer, ini seperti sebuah persyaratan yang harus di kuasai apalagi jika Anda ingin menjadi Backend Developer.
Dibagian ke-2 Bassic Mysql kita akan belajar tentang Inner Join, Left Join, Right Join, Cross Join. Perhatikan table berikut :
bassic mysql bagian 2 join dan inner-join
Dari gambar diatas kita punya dua table, yaitu table CUSTOMERS dan SALES_ORDER. Sebelum kita membahas lebih jauh tentang berbagai tipe join di Mysql, persiapkan data dan tablenya
CREATE TABLE `customers` (
`id` bigint NOT NULL AUTO_INCREMENT,
`customer_number` varchar(15) NOT NULL,
`name` varchar(255) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)CREATE TABLE `sales_order` (
`order_id` varchar(5) NOT NULL,
`partner_id` int NOT NULL,
`item_id` int NOT NULL,
`item_quantity` int NOT NULL,
`total_selling_price` int NOT NULL,
`sales_channel` varchar(3) NOT NULL,
`order_date` varchar(9) NOT NULL,
`customer_id` int NOT NULL
)
INSERT INTO example.customers (customer_number,name,created_at,updated_at,deleted_at) VALUES
('1001','Bob Martin','2021-06-18 14:45:44','2021-06-18 14:45:44',NULL),
('1002','Linus Trovald','2021-06-18 14:45:44','2021-06-18 14:45:44',NULL);
INSERT INTO tutorial.sales_order (order_id,partner_id,item_id,item_quantity,total_selling_price,sales_channel,order_date,customer_id) VALUES
('A0001',1,1001,1,100,'AAA','1-Jan-17',1),
('A0002',1,1005,2,20,'BBB','11-Jan-17',2),
('A0002',1,1003,4,120,'BBB','11-Jan-17',3),
('A0002',1,1001,2,200,'BBB','11-Jan-17',3),
('A0003',2,1002,1,80,'AAA','3-Mar-17',2),
('A0003',2,1008,6,75,'AAA','3-Mar-17',4),
('A0005',1,1001,1,100,'AAA','15-Apr-17',4),
('A0006',2,1003,5,150,'AAA','1-Jun-17',4),
('A0007',3,1001,2,200,'BBB','21-Jun-17',2),
('A0007',3,1005,1,10,'BBB','21-Jun-17',5);
INSERT INTO tutorial.sales_order (order_id,partner_id,item_id,item_quantity,total_selling_price,sales_channel,order_date,customer_id) VALUES
('A0007',3,1004,9,60,'BBB','21-Jun-17',3);
Berikut ini format penggunaan query INNER JOIN:
SELECT
select_list
FROM t1
INNER JOIN t2 ON join_condition1
INNER JOIN t3 ON join_condition2
...;
Dalam hal ini, tabel bagian kanan akan tampil secara keseluruhan, dan jika tabel bagian kiri ada yang tidak cocok dengan tabel bagian kanan akan menampilkan tulisan "NULL"
Berikut ini format penggunaan query RIGHT JOIN:
SELECT
select_list
FROM
t1
RIGHT JOIN t2 ON
join_condition;
Dalam hal ini, tabel bagian kiri akan tampil secara keseluruhan, dan jika tabel bagian kanan ada yang tidak cocok dengan tabel bagian kiri maka akan menampilkan tulisan "NULL".
Berikut ini format penggunaan query LEFT JOIN:
SELECT
select_list
FROM
t1
LEFT JOIN t2 ON
join_condition;
Berikut ini format penggunaan query CROSS JOIN:
SELECT * FROM t1
CROSS JOIN t2;
Cross Join dengan kondisi:
SELECT * FROM t1
CROSS JOIN t2
WHERE t1.id = t2.id;
Github: https://github.com/halovina/bassic-mysql/tree/bassic-mysql-bagian2