У меня возникли проблемы с пониманием того, что этот запрос работает. Предполагается вернуть имя клиентов, заказавших ВСЕ товары.
R относится к таблице заказов товаров, сделанных клиентами, которая содержит идентификатор клиента (cid) и идентификатор товара (iid).
I относится к таблице элементов, которые можно заказать, которая содержит идентификатор элемента.
C — это таблица клиентов с идентификатором клиента.
SELECT cname
FROM Customer C
WHERE NOT EXISTS
( (SELECT I.iid
FROM Item I)
EXCEPT
(SELECT R.iid
FROM Order R
WHERE R.cid=C.cid))
Насколько я понимаю, нижний вложенный запрос с SELECT R.iid получает все товары, заказанные любым покупателем.
Затем вложенный запрос выше EXCEPT с SELECT I.iid находит все элементы, которые не были заказаны ранее, путем минусования с помощью приведенного ниже запроса.
Если он вложен, какой оператор НЕ СУЩЕСТВУЕТ? Это R.cid = C.cid из-за ОТ Заказчика C? . Я не уверен, как я получу свой конечный результат. Спасибо за любую помощь.