Tutorial MySQL Query untuk Menampilkan Data dengan Semua Jenis Join
MySQL adalah salah satu sistem manajemen basis data yang paling populer di dunia. Dalam MySQL, terdapat jenis join yang berbeda-beda yang dapat digunakan untuk menggabungkan data dari beberapa tabel. Berikut adalah tutorial untuk menampilkan data dengan semua jenis join pada MySQL. Persiapan Sebelum kita mulai, pastikan bahwa MySQL sudah terinstall pada komputer Anda dan Anda sudah memiliki akses ke MySQL shell. Untuk mengikuti tutorial ini, kita akan menggunakan database store yang memiliki beberapa tabel, yaitu: customers orders order_items products Tabel customers memiliki kolom id, name, dan email. Tabel orders memiliki kolom id, customer_id, dan order_date. Tabel order_items memiliki kolom id, order_id, product_id, dan quantity. Tabel products memiliki kolom id, name, dan price. Untuk membuat tabel-tabel ini, jalankan perintah berikut: CREATE TABLE customers ( id INT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255));CREATE TABLE orders ( id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(id));CREATE TABLE order_items ( id INT PRIMARY KEY, order_id INT, product_id INT, quantity INT, FOREIGN KEY (order_id) REFERENCES orders(id), FOREIGN KEY (product_id) REFERENCES products(id));CREATE TABLE products ( id INT PRIMARY KEY, name VARCHAR(255), price DECIMAL(10,2)); Setelah tabel-tabel berhasil dibuat, kita dapat memasukkan beberapa data ke dalamnya dengan menjalankan perintah berikut: INSERT INTO customers VALUES (1, 'John Doe', 'john.doe@example.com');INSERT INTO customers VALUES (2, 'Jane Doe', 'jane.doe@example.com');INSERT INTO orders VALUES (1, 1, '2021-01-01');INSERT INTO orders VALUES (2, 2, '2021-01-02');INSERT INTO products VALUES (1, 'Product A', 10.00);INSERT INTO products VALUES (2, 'Product B', 20.00);INSERT INTO order_items VALUES (1, 1, 1, 2);INSERT INTO order_items VALUES (2, 1, 2, 1);INSERT INTO order_items VALUES (3, 2, 2, 3); Inner Join Inner join digunakan untuk menggabungkan data dari dua tabel yang memiliki nilai yang sama pada kolom yang dijadikan acuan. Contoh kasus: kita ingin menampilkan informasi customer dan produk yang dibeli oleh customer tersebut. SELECT customers.name, products.nameFROM customersINNER JOIN orders ON customers.id = orders.customer_idINNER JOIN order_items ON orders.id = order_items.order_idINNER JOIN products ON order_items.product_id = products.id; Hasilnya akan seperti ini: +-----------+-----------+| name | name |+-----------+-----------+| John Doe | Product A || John Doe | Product B || Jane Doe | Product B |+-----------+-----------+ Left Join Left join digunakan untuk menggabungkan data dari dua tabel dengan mempertahankan semua data pada tabel kiri, dan hanya data pada tabel kanan yang memiliki nilai yang sama pada kolom yang dijadikan acuan yang akan ditampilkan. Contoh kasus: kita ingin menampilkan informasi customer dan order yang dilakukan oleh customer tersebut, termasuk jika customer tidak memiliki order. SELECT customers.name, orders.order_dateFROM customersLEFT JOIN orders ON customers.id = orders.customer_id; Hasilnya akan seperti ini: +-----------+------------+| name | order_date |+-----------+------------+| John Doe | 2021-01-01 || Jane Doe | 2021-01-02 |+-----------+------------+ Right Join Right join digunakan untuk menggabungkan data dari dua tabel dengan mempertahankan semua data pada tabel kanan, dan hanya data pada tabel kiri yang memiliki nilai yang sama pada kolom yang dijadikan acuan yang akan ditampilkan. Contoh kasus: kita ingin menampilkan informasi order dan customer yang melakukan order tersebut, termasuk jika order tidak memiliki customer. SELECT orders.order_date, customers.nameFROM ordersRIGHT JOIN customers ON orders.customer_id = customers.id; Hasilnya akan seperti ini: +------------+-----------+| order_date | name |+------------+-----------+| 2021-01-01 | John Doe || 2021-01-02 | Jane Doe || NULL | NULL |+------------+-----------+ Full Outer Join Full outer join digunakan untuk menggabungkan data dari dua tabel dengan mempertahankan semua data pada kedua tabel, termasuk jika tidak ada nilai yang sama pada kolom yang dijadikan acuan. Contoh kasus: kita ingin menampilkan informasi customer dan order yang dilakukan oleh customer tersebut, termasuk jika customer tidak memiliki order dan jika order tidak memiliki customer. SELECT customers.name, orders.order_dateFROM customersFULL OUTER JOIN orders ON customers.id = orders.customer_id; Namun, MySQL tidak mendukung full outer join. Sebagai alternatif, kita dapat menggunakan union dari left join dan right join. SELECT customers.name, orders.order_dateFROM customersLEFT JOIN orders ON customers.id = orders.customer_idUNIONSELECT customers.name, orders.order_dateFROM ordersRIGHT JOIN customers ON orders.customer_id = customers.idWHERE customers.id IS NULL; Hasilnya akan seperti ini: +-----------+------------+| name | order_date |+-----------+------------+| John Doe | 2021-01-01 || Jane Doe | 2021-01-02 || NULL | NULL |+-----------+------------+ Cross Join Cross join digunakan untuk menggabungkan setiap baris dari satu tabel dengan setiap baris dari tabel lainnya. Contoh kasus: kita ingin menampilkan semua kemungkinan kombinasi customer dan produk. SELECT customers.name, products.nameFROM customersCROSS JOIN products; Hasilnya akan seperti ini: +-----------+-----------+| name | name |+-----------+-----------+| John Doe | Product A || John Doe | Product B || Jane Doe | Product A || Jane Doe | Product B |+-----------+-----------+ Itulah tutorial untuk menampilkan data dengan semua jenis join pada MySQL. Semoga bermanfaat!
MySQL adalah salah satu sistem manajemen basis data yang paling populer di dunia. Dalam MySQL, terdapat jenis join yang berbeda-beda yang dapat digunakan untuk menggabungkan data dari beberapa tabel.
Berikut adalah tutorial untuk menampilkan data dengan semua jenis join pada MySQL.
Persiapan
Sebelum kita mulai, pastikan bahwa MySQL sudah terinstall pada komputer Anda dan Anda sudah memiliki akses ke MySQL shell.
Untuk mengikuti tutorial ini, kita akan menggunakan database store yang memiliki beberapa tabel, yaitu:
customersordersorder_itemsproducts
Tabel customers memiliki kolom id, name, dan email. Tabel orders memiliki kolom id, customer_id, dan order_date. Tabel order_items memiliki kolom id, order_id, product_id, dan quantity. Tabel products memiliki kolom id, name, dan price.
Untuk membuat tabel-tabel ini, jalankan perintah berikut:
CREATE TABLE customers ( id INT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255));CREATE TABLE orders ( id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(id));CREATE TABLE order_items ( id INT PRIMARY KEY, order_id INT, product_id INT, quantity INT, FOREIGN KEY (order_id) REFERENCES orders(id), FOREIGN KEY (product_id) REFERENCES products(id));CREATE TABLE products ( id INT PRIMARY KEY, name VARCHAR(255), price DECIMAL(10,2));
Setelah tabel-tabel berhasil dibuat, kita dapat memasukkan beberapa data ke dalamnya dengan menjalankan perintah berikut:
INSERT INTO customers VALUES (1, 'John Doe', 'john.doe@example.com');INSERT INTO customers VALUES (2, 'Jane Doe', 'jane.doe@example.com');INSERT INTO orders VALUES (1, 1, '2021-01-01');INSERT INTO orders VALUES (2, 2, '2021-01-02');INSERT INTO products VALUES (1, 'Product A', 10.00);INSERT INTO products VALUES (2, 'Product B', 20.00);INSERT INTO order_items VALUES (1, 1, 1, 2);INSERT INTO order_items VALUES (2, 1, 2, 1);INSERT INTO order_items VALUES (3, 2, 2, 3);
Inner Join
Inner join digunakan untuk menggabungkan data dari dua tabel yang memiliki nilai yang sama pada kolom yang dijadikan acuan.
Contoh kasus: kita ingin menampilkan informasi customer dan produk yang dibeli oleh customer tersebut.
SELECT customers.name, products.name
FROM customers
INNER JOIN orders ON customers.id = orders.customer_id
INNER JOIN order_items ON orders.id = order_items.order_id
INNER JOIN products ON order_items.product_id = products.id;
Hasilnya akan seperti ini:
+-----------+-----------+
| name | name |
+-----------+-----------+
| John Doe | Product A |
| John Doe | Product B |
| Jane Doe | Product B |
+-----------+-----------+
Left Join
Left join digunakan untuk menggabungkan data dari dua tabel dengan mempertahankan semua data pada tabel kiri, dan hanya data pada tabel kanan yang memiliki nilai yang sama pada kolom yang dijadikan acuan yang akan ditampilkan.
Contoh kasus: kita ingin menampilkan informasi customer dan order yang dilakukan oleh customer tersebut, termasuk jika customer tidak memiliki order.
SELECT customers.name, orders.order_dateFROM customersLEFT JOIN orders ON customers.id = orders.customer_id;
Hasilnya akan seperti ini:
+-----------+------------+
| name | order_date |
+-----------+------------+
| John Doe | 2021-01-01 |
| Jane Doe | 2021-01-02 |
+-----------+------------+
Right Join
Right join digunakan untuk menggabungkan data dari dua tabel dengan mempertahankan semua data pada tabel kanan, dan hanya data pada tabel kiri yang memiliki nilai yang sama pada kolom yang dijadikan acuan yang akan ditampilkan.
Contoh kasus: kita ingin menampilkan informasi order dan customer yang melakukan order tersebut, termasuk jika order tidak memiliki customer.
SELECT orders.order_date, customers.name
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.id;
Hasilnya akan seperti ini:
+------------+-----------+
| order_date | name |
+------------+-----------+
| 2021-01-01 | John Doe |
| 2021-01-02 | Jane Doe |
| NULL | NULL |
+------------+-----------+
Full Outer Join
Full outer join digunakan untuk menggabungkan data dari dua tabel dengan mempertahankan semua data pada kedua tabel, termasuk jika tidak ada nilai yang sama pada kolom yang dijadikan acuan.
Contoh kasus: kita ingin menampilkan informasi customer dan order yang dilakukan oleh customer tersebut, termasuk jika customer tidak memiliki order dan jika order tidak memiliki customer.
SELECT customers.name, orders.order_date
FROM customers
FULL OUTER JOIN orders ON customers.id = orders.customer_id;
Namun, MySQL tidak mendukung full outer join. Sebagai alternatif, kita dapat menggunakan union dari left join dan right join.
SELECT customers.name, orders.order_date
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id
UNION
SELECT customers.name, orders.order_date
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.id
WHERE customers.id IS NULL;
Hasilnya akan seperti ini:
+-----------+------------+
| name | order_date |
+-----------+------------+
| John Doe | 2021-01-01 |
| Jane Doe | 2021-01-02 |
| NULL | NULL |
+-----------+------------+
Cross Join
Cross join digunakan untuk menggabungkan setiap baris dari satu tabel dengan setiap baris dari tabel lainnya.
Contoh kasus: kita ingin menampilkan semua kemungkinan kombinasi customer dan produk.
SELECT customers.name, products.name
FROM customers
CROSS JOIN products;
Hasilnya akan seperti ini:
+-----------+-----------+
| name | name |
+-----------+-----------+
| John Doe | Product A |
| John Doe | Product B |
| Jane Doe | Product A |
| Jane Doe | Product B |
+-----------+-----------+
Itulah tutorial untuk menampilkan data dengan semua jenis join pada MySQL. Semoga bermanfaat!


Komentar (6)
Tulis Komentar