У меня есть эта схема:Проектирование баз данных Реляционная алгебра запрос
Suppliers(sid: integer, sname: string, address: string)
Parts(pid: integer, pname: string, color: string)
Catalog(sid: integer, pid: integer, cost: real)
И эту задачу:
Find the sids of suppliers who supply every part.
То, что я не понимаю, почему в этом решении мы не работаем с отрицанием , У меня возникло соблазн поставить C1.pid <> P.pid
вместо C1.pid = P.pid
в конце. Может кто-нибудь объяснить?
SELECT C.sid
FROM Catalog C
WHERE NOT EXISTS (SELECT P.pid
FROM Parts P
WHERE NOT EXISTS (SELECT C1.sid
FROM Catalog C1
WHERE C1.sid = C.sid
AND C1.pid = P.pid))
Да, вы правы, это проще: D –