从Customer表中选择Customer Name,并使用Orders表-SQL统计所有订单
我有两个表,定义如下: 表:客户: 表:订单: 我想写一个查询来选择每个客户使用JOIN下的所有订单的每个名称和计数。结果是,从Customer表中选择Customer Name,并使用Orders表-SQL统计所有订单,sql,Sql,我有两个表,定义如下: 表:客户: 表:订单: 我想写一个查询来选择每个客户使用JOIN下的所有订单的每个名称和计数。结果是, John | 4 Mack | 0 Andy | 2 我的问题是: SELECT CustomerName, Count(*) FROM Orders INNER JOIN Customers WHERE Orders.CustomerID = Customers.CustomerID; 但它返回了错误的结果。请告知。使用
John | 4
Mack | 0
Andy | 2
我的问题是:
SELECT
CustomerName, Count(*)
FROM
Orders
INNER JOIN
Customers WHERE Orders.CustomerID = Customers.CustomerID;
但它返回了错误的结果。请告知。使用:
SELECT Customers.CustomerName, Count(*)
FROM Orders LEFT OUTER JOIN Customers
WHERE Orders.CustomerID=Customers.CustomerID GROUP BY Customers.CustomerName;
你错过了小组赛。我将这样编写查询:
SELECT c.CustomerName, Count(o.CustomerId)
FROM Customers c LEFT JOIN
Orders o
ON o.CustomerID = c.CustomerID
GROUP BY c.CustomerName;
注:
表别名c和o使查询更易于编写和读取。
左侧连接保留所有客户,即使是没有订单的客户。如果不希望计数为0,请更改为内部联接。
对于连接条件,所有连接都应该有ON子句,而不是WHERE子句。
还需要GROUP BY来修复您的查询尝试。
来自客户
左外连接
选择COUNT*\u COUNT,CustomerId\u CustomerId
从命令
按客户ID分组
一个ON _CustomerId=CustomerId它产生的结果与我的相同。我正在使用W3School上的客户和订单表。使用此查询后,仅选择一行。请检查使用那些表格。我不敢相信我错过了。谢谢,这很有帮助。使用“ON”而不是“WHERE”,你的问题就解决了
SELECT Customers.CustomerName, Count(*)
FROM Orders LEFT OUTER JOIN Customers
WHERE Orders.CustomerID=Customers.CustomerID GROUP BY Customers.CustomerName;
SELECT c.CustomerName, Count(o.CustomerId)
FROM Customers c LEFT JOIN
Orders o
ON o.CustomerID = c.CustomerID
GROUP BY c.CustomerName;
SELECT CustomerName,ISNULL(_Count,0) [Count]