SQL - 当我加入另一个表时,它会在我不想要计算的结果中添加行

时间:2015-10-18 07:07:07

标签: sql

我第二次学习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

1 个答案:

答案 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吗?

相关问题