Вот моя схема:
Поставщики ( sid: целое число , sname: строка, строка адреса)
Детали ( pid: целое число, pname: строка, цвет: строка)
Каталог ( sid: целое число, pid: целое число, стоимость: действительное)
полужирный обозначает первичный ключ.
Я хочу написать запрос, чтобы найти всех поставщиков, которые поставляют каждую деталь. Вот два запроса, которые у меня уже есть:
-- get all parts for a given supplier
SELECT Parts.pid
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
WHERE Suppliers.sid = 4;
-- gets all parts that exist
SELECT Parts.pid
FROM Parts
То, что я хочу сделать в императивном смысле, примерно так:
Define result set
Foreach Supplier:
If the list of parts produced by a supplier
is equal to the total list of parts, add this supplier to the result set
Return result set
Как я могу перевести это в MySQL?