Рассмотрим следующую схему:Как писать запросы с помощью оператора JOIN?
Suppliers(sid: integer, sname: string, address: string)
Parts(pid: integer, pname: string, color: string)
Catalog(sid: integer, pid: integer, cost: real)
Ключевые поля подчеркнуты, а домен каждого поля указывается после имени поля. Таким образом, sid является ключом для поставщиков, pid является ключом для деталей, а sid и pid вместе образуют ключ для Каталога. В каталоге указаны цены, взимаемые за комплектующие, на Поставщики.
Сейчас я пытаюсь решить эту SQL заявление -
Find the sids of suppliers who supply some red part and some green part.
Я пришел с этим SQL запроса, но не уверен, правильно ли это или нет -
SELECT C.sid
FROM Parts P, Catalog C
WHERE P.color = `red' AND P.pid = C.pid
AND EXISTS (SELECT P2.pid
FROM Parts P2, Catalog C2
WHERE P2.color = `green' AND C2.sid = C.sid
AND P2.pid = C2.pid)
Есть ли способ, Я могу написать тот же самый запрос, используя оператор JOIN. Существующий оператор меня немного смущает. А какой самый простой способ написать вышеупомянутый запрос?
Зачем использовать? когда вы можете просто «присоединиться к 3 таблицам, тогда где <>' –