(вопрос новичка в SQL). Я работаю над запросом, который может найти всех рабочих, которые создают продукты, которые включают все продукты, созданные Worker с id = 18.
CREATE TABLE Creates(
ID CHAR(10),
PRODUCTID CHAR(10),
PRIMARY KEY (ID, PRODUCTID),
FOREIGN KEY(ID) REFERENCES Worker(ID) ON DELETE CASCADE,
};
CREATE TABLE Worker(
ID CHAR(10) PRIMARY KEY,
};
Вот то, что есть в моей таблице Создает сейчас:
INSERT INTO Creates VALUES('2', 'S100');
INSERT INTO Creates VALUES('2', 'D111');
INSERT INTO Creates VALUES('4', 'D111');
INSERT INTO Creates VALUES('4', 'S119');
INSERT INTO Creates VALUES('6', 'S2');
INSERT INTO Creates VALUES('6', 'D231');
INSERT INTO Creates VALUES('8', 'S103');
INSERT INTO Creates VALUES('10', 'S109');
INSERT INTO Creates VALUES('12', 'S189');
INSERT INTO Creates VALUES('14', 'S982');
INSERT INTO Creates VALUES('20', 'E341');
INSERT INTO Creates VALUES('22', 'E100');
INSERT INTO Creates VALUES('18', 'D111');
INSERT INTO Creates VALUES('18', 'D231');
INSERT INTO Creates VALUES('2', 'D231');
INSERT INTO Creates VALUES('24', 'D111');
INSERT INTO Creates VALUES('24', 'D231');
Как мы видим, на самом деле правильный вывод должен быть ID 2 и 24.
Это то, что у меня сейчас есть, чтобы сделать это правдой, но я не думаю, что это правильно, поэтому я хотел бы услышать от кого-либо или любое предложение, которое может помочь мне с этим, заранее спасибо.
SELECT DISTINCT ID
FROM Creates
WHERE PRODUCTID = ALL (SELECT PRODUCTID FROM Creates WHERE ID = '18')
ORDER BY ID ASC
;