Di tutorial sebelumnya kita telah belajar tentang bagaimana cara mengubah struktur table di database Mysql.
Pada tuorial bassic Mysql yang ke-9 ini kita akan belajar tentang penggunaan SUBQUERY pada database Mysql.
Dalam subquery, query SQL SELECT yang ditempatkan sebagai bagian dari kueri lain disebut OUTER QUERY.
Tempatkan sub-query di klausa SELECT, FROM, atau WHERE dan sub-query diawali dengan tanda kurung buka dan tutup "( statement-query )".
Sub-query bisa juga mengembalikan satu nilai, satu baris, satu kolom, atau beberapa baris dari satu atau beberapa kolom.
Saat menulis sub-query dimungkinkan untuk menggunakan operator pembanding seperti =, >, >=, <, <=, != (atau <>).
Selain itu, Anda juga dapat menggunakan operator ALL, ANY dan SOME diikuti dengan operator pembanding.
SELECT some_column, some_column FROM (Subquery) AS alias;
INSERT INTO table1 SELECT column1,column2,column3 FROM table2 WHERE some_column some_operator(Subquery);
UPDATE table1 SET column1 = some_value WHERE some_column some_operator(Sub-query);
DELETE FROM table1 WHERE some_column some_operator(Subquery);
Halovina Aja merupakan perusahaan konsultan yang membantu sebuah restoran di kota Semarang, Halovina mencoba mengolah data yang ada untuk kebutuhan pertumbuhan bisnis usaha restoran.
Restoran ini berfokus pada resep tradisional yang disajikan dengan sentuhan modern. Di tutorial ini, Anda harus menyelesaikan tugas-tugas berikut untuk memudahkan restoran mencetak pemesanan yang relevan dan detail menu dengan bantuan subquery.
Sebelum Anda membantu menyelesaikan masalah diatas, persiapkan terlebih dahulu sample data berikut:
CREATE DATABASE halovinaaja_db;
USE halovinaaja_db;CREATE TABLE MenuItems (
ItemID INT,
Name VARCHAR(200),
Type VARCHAR(100),
Price INT,
PRIMARY KEY (ItemID)
);CREATE TABLE Menus (
MenuID INT,
ItemID INT,
Cuisine VARCHAR(100),
PRIMARY KEY (MenuID,ItemID)
);CREATE TABLE Bookings (
BookingID INT,
TableNo INT,
GuestFirstName VARCHAR(100),
GuestLastName VARCHAR(100),
BookingSlot TIME,
EmployeeID INT,
PRIMARY KEY (BookingID)
);CREATE TABLE TableOrders (
OrderID INT,
TableNo INT,
MenuID INT,
BookingID INT,
BillAmount INT,
Quantity INT,
PRIMARY KEY (OrderID,TableNo)
);INSERT INTO MenuItems VALUES(1,'Olives','Starters', 5),
(2,'Flatbread','Starters', 5),
(3, 'Minestrone', 'Starters', 8),
(4, 'Tomato bread','Starters', 8),
(5, 'Falafel', 'Starters', 7),
(6, 'Hummus', 'Starters', 5),
(7, 'Greek salad', 'Main Courses', 15),
(8, 'Bean soup', 'Main Courses', 12),
(9, 'Pizza', 'Main Courses', 15),
(10,'Greek yoghurt','Desserts', 7),
(11, 'Ice cream', 'Desserts', 6),
(12, 'Cheesecake', 'Desserts', 4),
(13, 'Athens White wine', 'Drinks', 25),
(14, 'Corfu Red Wine', 'Drinks', 30),
(15, 'Turkish Coffee', 'Drinks', 10),
(16, 'Turkish Coffee', 'Drinks', 10),
(17, 'Kabasa', 'Main Courses', 17);INSERT INTO Menus VALUES(1, 1, 'Greek'),
(1, 7, 'Greek'),
(1, 10, 'Greek'),
(1, 13, 'Greek'),
(2, 3, 'Italian'),
(2, 9, 'Italian'),
(2, 12, 'Italian'),
(2, 15, 'Italian'),
(3, 5, 'Turkish'),
(3, 17, 'Turkish'),
(3, 11, 'Turkish'),
(3, 16, 'Turkish');INSERT INTO Bookings VALUES(1,12,'Anna','Iversen','19:00:00',1),
(2, 12, 'Joakim', 'Iversen', '19:00:00', 1),
(3, 19, 'Vanessa', 'McCarthy', '15:00:00', 3),
(4, 15, 'Marcos', 'Romero', '17:30:00', 4),
(5, 5, 'Hiroki', 'Yamane', '18:30:00', 2),
(6, 8, 'Diana', 'Pinto', '20:00:00', 5);INSERT INTO TableOrders VALUES(1, 12, 1, 1, 2, 86),
(2, 19, 2, 2, 1, 37),
(3, 15, 2, 3, 1, 37),
(4, 5, 3, 4, 1, 40),
(5, 8, 1, 5, 1, 43);
1) Tugas 1: Buat query SQL SELECT untuk menemukan semua pemesanan yang jatuh tempo setelah pemesanan tamu 'Vanessa McCarthy'.
2) Tugas 2: Buat query SQL SELECT untuk menemukan item menu yang lebih mahal daripada semua tipe item menu 'Starters' dan 'Desserts'.
3) Tugas 3: Buat query SQL SELECT untuk menemukan item menu yang harganya sama dengan item menu Starters yang merupakan masakan Italia.
4) Tugas 4: Buat query SQL SELECT untuk menemukan item menu yang tidak dipesan oleh tamu yang melakukan pemesanan.