我为任何描述问题道歉,因为这是我的第一篇文章。我正在尝试编写一个查询,该查询将“返回所有未出售给Red公司的销售人员”以获取特定的一组表。我将列出下面的表格(以及我目前编写的查询),但有一个销售人员符合这两个标准(已售出和未售出)。我想看看如何从查询结果中省略它们,但我找不到方法。
到目前为止我的查询:
SELECT Salesperson.ID, Salesperson.Name
FROM Salesperson, Customer, Order
WHERE Salesperson.ID = Order.Sales_ID
AND Order.Cust_ID = Customer.ID
AND Order.Cust_ID <> (
SELECT Customer.ID
FROM Customer
WHERE Name = 'Red'
);
返回的结果:
ID Name
4 Pam
5 Alex
我正在努力确保Pam不会返回,因为您看到Orders表中有两个项目,一个是公司Red,另一个是公司Yellow。由于她与黄公司的订单,我认为我的询问正在归还她。任何帮助或建议将不胜感激。
答案 0 :(得分:0)
首先,了解如何使用正确的join
语法。一种方法使用group by
和having
:
SELECT s.ID, s.Name
FROM Salesperson s JOIN
Orders o
ON s.ID = o.Sales_ID JOIN
Customer c
ON o.Cust_ID = c.ID
GROUP BY s.ID, s.Name
HAVING SUM(CASE WHEN c.name = 'Red' THEN 1 ELSE 0 END) = 0;