← Усі задачіSQL · Middle
Товари, які ніколи не замовляли
Виведіть товари, яких немає в жодному рядку order_items: колонки id і name, за id. Зверніть увагу: product_id може бути NULL (товар видалили).
Таблиці
CREATE TABLE products (
id int PRIMARY KEY,
name text NOT NULL
);
CREATE TABLE order_items (
order_id int NOT NULL,
product_id int, -- NULL: the product was deleted
quantity int NOT NULL
);Ctrl+Enter - запустити тести. Tab - відступ; щоб вийти з редактора клавіатурою, натисніть Esc, а потім Tab. Код зберігається в цьому браузері.
Тести (3)
Кожен тест заповнює таблиці своїми даними й порівнює результат вашого запиту з очікуваним: ті самі колонки (назви й порядок) і ті самі рядки в тому самому порядку, тож ORDER BY важливий. Запит виконується в справжньому PostgreSQL просто в браузері; перший запуск завантажує його (близько 5 МБ).
INSERT INTO products VALUES (1, 'Mug'), (2, 'Tea'), (3, 'Pen'); INSERT INTO order_items VALUES (100, 1, 2), (101, 1, 1);
-- a NULL product_id: NOT IN returns nothing here INSERT INTO products VALUES (1, 'Mug'), (2, 'Tea'), (3, 'Pen'); INSERT INTO order_items VALUES (100, 2, 1), (101, NULL, 1);
-- every product was ordered INSERT INTO products VALUES (1, 'Mug'); INSERT INTO order_items VALUES (100, 1, 1);