Я использую MySQL, и у меня есть три таблицы:
Table: Salesperson
ID | Name | Age | Salary
1 | Abe | 61 | 140000
2 | Bob | 34 | 44000
5 | Chris| 34 | 40000
7 | Dan | 41 | 52000
8 | Ken | 57 | 115000
11 | Joe | 38 | 38000
Table: Customer
ID | Name | City | Industry_Type
4 | Samsonic | pleasant | J
6 | Panasung | oaktown | J
7 | Samony | jackson | B
9 | Orange | jackson | B
Table: Orders
Number | order_date | cust_id | salesperson_id | Amount
10 | 1996-08-02 | 4 | 2 |540
20 | 1999-01-30 | 4 | 8 |1800
30 | 1995-07-14 | 9 | 1 |460
40 | 1998-01-29 | 7 | 2 |2400
50 | 1998-02-03 | 6 | 7 |600
60 | 1998-03-02 | 6 | 7 |720
70 | 1995-05-06 | 9 | 7 |150
Я хочу найти имена всех продавцов, у которых нет заказов с Samsonic и которые сделали хотя бы 1 заказ
Мой ожидаемый результат:
Name
Abe
Dan
Я пытался:
SELECT Distinct(s.name)
FROM Orders o
INNER JOIN Salesperson s
ON o.salesperson_id = s.ID
INNER JOIN Customer c
ON c.ID = o.cust_id
WHERE s.name NOT IN(
select s.name where c.name='Samsonic'
);
Однако результат, который я получаю:
Name
Dan
Bob
Abe
Я полагаю, что Боб появляется, так как он сделал другой заказ, который не был Самсоником. Как я могу получить желаемый результат, по-прежнему объединяя все три таблицы? Спасибо!