← Wszystkie zadaniaSQL · Middle
Produkty, których nigdy nie zamówiono
Wypisz produkty, których nie ma w żadnym wierszu order_items: kolumny id i name, według id. Uwaga: product_id może być NULL (produkt usunięto).
Tabele
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 uruchamia testy. Tab robi wcięcie; aby wyjść z edytora klawiaturą, naciśnij Esc, a potem Tab. Kod zapisuje się w tej przeglądarce.
Testy (3)
Każdy test wypełnia tabele własnymi danymi i porównuje wynik twojego zapytania z oczekiwanym: te same kolumny (nazwy i kolejność) i te same wiersze w tej samej kolejności, więc ORDER BY ma znaczenie. Zapytanie działa w prawdziwym PostgreSQL prosto w przeglądarce; pierwsze uruchomienie go pobiera (około 5 MB).
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);