Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

[SQL] Запрос на удаление связи.

BlackSad Мыслитель (8275), на голосовании 4 года назад
У меня имеется связь товара и компании которую этот товар поставляет. (рис 1)
Мне необходимо вывести те компании которые поставляют Молоко, но не поставляет Муку.
Я это пытался сделать таким способом:
SELECT TovarTbl.Name, ProviderTbl.Company
FROM TovarTbl inner join (ProviderTbl inner join ShipmentsTbl on ProviderTbl.idProvider = ShipmentsTbl.idProvider)
ON TovarTbl.idTovar = ShipmentsTbl.idTovar
Where TovarTbl.Name = 'Молоко' and TovarTbl.Name <> 'Мука'

Таким образом выводится всего 3 компании которые поставляют молоко.
Но среди этих 3 компаний одна компания поставляет муку, и она все равно показывается в результате не смотря на строчку <> 'Мука'.

Дистанционное обучение это нечто... Помогите (
Голосование за лучший ответ
Лайт Ягами Искусственный Интеллект (309937) 4 года назад
В SQL это так не работает. Таблицу Shipments придётся присоединять дважды под разными псевдонимами, один раз отфильтровать там записи с Молоком, второй раз отфильтровать записи с Мукой, а в таблице поставщиков отфильтровать записи, где есть записи из первой таблицы, но нет из второй.
Как-то примерно так: (таблицы и поля сам переименовывай, как у тебя там они называются)

Алексей Кузьминов Мудрец (11132) 4 года назад
Идеально бы подошёл оператор MINUS (он же EXCEPT), но он доступен не для всякого SQL сервера.
Похожие вопросы