← Alle AufgabenSQL · Middle
Produkte, die nie bestellt wurden
Liste Produkte auf, die in keiner Zeile von order_items vorkommen: Spalten id und name, sortiert nach id. Beachte, dass product_id NULL sein kann (das Produkt wurde gelöscht).
Tabellen
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
);Strg+Enter führt die Tests aus. Tab rückt ein; um den Editor per Tastatur zu verlassen, drücke Esc und dann Tab. Der Code wird in diesem Browser gespeichert.
Tests (3)
Jeder Test füllt die Tabellen mit eigenen Daten und vergleicht das Ergebnis deiner Abfrage mit dem erwarteten: dieselben Spalten (Namen und Reihenfolge) und dieselben Zeilen in derselben Reihenfolge, ORDER BY zählt also. Die Abfrage läuft in echtem PostgreSQL direkt im Browser; der erste Start lädt es herunter (etwa 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);