Верните имена людей, у которых нет заказов в компании X. Результат: кто-то, у кого есть заказ, и еще один покупатель. - PullRequest
0 голосов
/ 16 июня 2020

У меня есть три таблицы:

t1 - Salesperson
SalesID, Name
1, tom
2, jerry

t2 - Customers
CustID, Name
4, Pod
5, Neo

t3 - Orders
OrderID, CustOrdID, SalesOrdID
999, 1, 4
1000, 1, 5
1001, 2, 5

Я хочу вернуть только имена продавцов, у которых НИКОГДА не было заказов с Pod (ответ должен быть просто Джерри)

select DISTINCT Salesperson.Name
from Salesperson
INNER JOIN Orders on Orders.SalesOrdID=Salesperson.SalesID
INNER JOIN Customers ON Orders.CustOrdID=Customers.CustID
Where Customers.Name <> 'Pod';

Это неверно, потому что он возвращает Тома и Джерри, так как у Тома есть продажа с Нео в таблице заказов.

Как я могу указать в моем запросе исключить любого продавца с продажей в POD из моего результата . Я пробовал подзапросы, ЕСЛИ, не существует, и я просто не могу понять логику / синтаксис

Спасибо за любую помощь

1 Ответ

0 голосов
/ 16 июня 2020
SELECT Salesperson.Name
FROM Salesperson
INNER JOIN Orders ON Orders.SalesOrdID = Salesperson.SalesID
INNER JOIN Customers ON Orders.CustOrdID = Customers.CustID
GROUP BY Salesperson.Name
HAVING 0 = SUM(Customers.Name = 'Pod')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...