gpt4 book ai didi

mysql - SQL 连接,对吗?左边 ?内?

转载 作者:行者123 更新时间:2023-11-29 12:07:47 27 4
gpt4 key购买 nike

使用 mySql,我想列出客户对特定产品类别进行的所有购买。

所以,我有 3 个表:客户 (idCustomer, Name)、类别 (idCategory, CategoryName) 和订单 (idOrder、idCustomer、idCathegory、Qty、Price)

但我想要一个包含所有客户的列表。不仅仅是购买该特定 idCategory 的人

我想的是这样的:

select sum(Orders.Qty), Customers.Name 
from Orders
right join Customers on Orders.idCustomer = Customer.idCustomer
where Orders.idCategory = 'Notebooks'
group by Orders.idCategory

但是这个语句只列出了Orders表中存在的客户的记录。而且我全都想要(没买的,数量=0)

提前致谢

最佳答案

大多数人发现左连接右连接更容易遵循。 左连接的逻辑是保留第一个表中的所有行,以及其余表中的附加信息。因此,如果您想要所有客户,那么这应该是第一个表。

然后您将在第二个表上有一个条件。除第一个表之外的所有表的条件都应位于 on 子句中,而不是 where 中。原因很简单:当没有匹配时,该值将为 NULL,并且 where 条件将失败。

所以,尝试这样的事情:

select sum(o.Qty) as sumqty, c.Name 
from Customers c left join
Orders o
on o.idCustomer = c.idCustomer and
o.idCategory = 'Notebooks'
group by c.Name;

最后,group by 应该与 select 子句有关系。

关于mysql - SQL 连接,对吗?左边 ?内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31183234/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com