如何过滤mysql查询以忽略特定匹配项

cu6pst1q  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(344)

我为任何描述问题道歉,因为这是我的第一篇文章。我正在尝试为一组特定的表编写一个查询,该查询将“返回所有没有向公司销售的销售人员”。我将列出下表(以及我目前编写的查询),但有一个销售人员同时满足这两个条件(已售出和未售出)。我想看看如何从查询结果中省略它们,但我没有找到一种方法。
table
我目前的问题是:

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

我正在努力确保帕姆不会回来,因为你看到她在订单表中有两个项目,一个是公司红的,另一个是公司黄的。我想我的问题是返回她由于她的订单与黄色公司。任何帮助或建议都将不胜感激。

oo7oh9g9

oo7oh9g91#

首先,学会正确使用 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;

相关问题