Created
August 29, 2017 19:19
-
-
Save ladayaroslav/73600d49943d8c2b6f6216abe5697662 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE TABLE item_sizes( | |
size_id text PRIMARY KEY | |
); | |
INSERT INTO item_sizes VALUES ('small'), ('large'); | |
CREATE TABLE warehouses( | |
warehouse_id SERIAL PRIMARY KEY, | |
name text NOT NULL | |
); | |
INSERT INTO warehouses(name) VALUES ('CA'), ('NY'), ('TX'); | |
CREATE TABLE warehouses_sizes( | |
warehouse_id int NOT NULL REFERENCES warehouses, | |
size_id text NOT NULL REFERENCES item_sizes, | |
PRIMARY KEY(warehouse_id, size_id) | |
); | |
INSERT INTO warehouses_sizes(warehouse_id, size_id) VALUES | |
(1, 'small'), | |
(1, 'large'), | |
(2, 'small'), | |
(3, 'large'); | |
CREATE TABLE items( | |
item_id SERIAL PRIMARY KEY, | |
name text NOT NULL, | |
item_size text NOT NULL REFERENCES item_sizes | |
); | |
INSERT INTO items(name, item_size) | |
VALUES ('lamp', 'small'), ('sofa', 'large'), ('chair', 'large'); | |
-------------------------------------- | |
SELECT i.* | |
FROM items AS i | |
WHERE EXISTS ( | |
SELECT 1 | |
FROM warehouses_sizes AS ws | |
JOIN warehouses AS w | |
ON w.warehouse_id = ws.warehouse_id | |
WHERE ws.size_id = i.item_size | |
AND w.name = 'CA' | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment