从Customer表中选择Customer Name,并使用Orders表-SQL统计所有订单

从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; 但它返回了错误的结果。请告知。使用

我有两个表,定义如下:

表:客户:

表:订单:

我想写一个查询来选择每个客户使用JOIN下的所有订单的每个名称和计数。结果是,

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]