我第二次学习SQL,而且我无法弄清楚如何加入一个额外的表(访问该表中我想要的字段所需的表)总结),没有它返回结果的额外行,因为这给了我不正确的计数。
这是我的问题,正如我所看到的那样,但也许我的方法是错误的。
我需要完成的是为每个客户的OrderItems表中的所有订单总计ItemPrice。我已经这样做了,但由于必须加入另外的表格,所以不能没有得到错误的订单数量。
以下是我正在处理的问题的缩写代码,后面是结果。运行代码的结果在左侧,而结果是取消注释右侧的2行。
select customers.FirstName, Orders.CustomerID, count(*) as NumOfOrders
from Orders
join Customers
on orders.CustomerID=Customers.CustomerID
-- join OrderItems
-- on OrderItems.OrderID=Orders.OrderID
group by customers.FirstName, Orders.CustomerID
having count(*) > 1
order by NumOfOrders desc
fname ID count fname ID count
--------------------- ----------------------
David 4 3 Allan 1 3
Heather 8 2 David 4 3
Kris 18 2 Frank 6 3
Bette 29 2 Heather 8 2
Allan 1 2 Simona 14 2
Kris 18 2
Yuki 27 2
Bette 29 2
Chanel 35 2
答案 0 :(得分:0)
只是猜测,因为我没有所需的所有信息,但也许你可以做到
count(distinct Orders.OrderID)
获得正确的计数?
select customers.FirstName, Orders.CustomerID, count(distinct Orders.OrderID) as NumOfOrders
from Orders
join Customers
on orders.CustomerID=Customers.CustomerID
join OrderItems
on OrderItems.OrderID=Orders.OrderID
group by customers.FirstName, Orders.CustomerID
having count(*) > 1
order by NumOfOrders desc
也许您需要将HAVING
子句调整为having count(distinct Orders.OrderID) > 1
吗?