提问人:mark davies 提问时间:5/22/2020 最后编辑:mark davies 更新时间:5/22/2020 访问量:113
选择具有内部联接的订单总数
Selecting total number of orders with an Inner Join
问:
我有 2 张表:和 .某些用户有 1 行或多行,其中每行都分配了一个 .我需要的是以下代码仅计算用户在所选日期内有 1 行或更多行的订单,这就是我检查 .tblOrders
tblItems
tblItems
fileID
tblItems
fileID > 0
但是,此代码返回的计数少于应有的计数:
SELECT COUNT(*) AS totalStalls
FROM tblOrders
INNER JOIN tblItems ON tblOrders.accountID = tblItems.accountID
AND tblItems.fileID > 0
AND tblOrders.saleDate = @saleDate
WHERE tblOrders.saleDate = @saleDate
GROUP BY tblorders.orderID
答:
1赞
Chema
5/22/2020
#1
我会试试这个
SELECT COUNT(1) AS totalStalls
FROM tblOrders
INNER JOIN tblItems ON tblOrders.accountID = tblItems.accountID
WHERE tblOrders.saleDate = @saleDate
评论
0赞
mark davies
5/22/2020
非常感谢您的回复。我已经尝试过这个,它给了我与我上面尝试的结果相同的结果。当它应该在 5 行左右或更多时,它计数 35 行。
1赞
Chema
5/22/2020
请添加一些数据示例,以便我们了解正在发生的事情。
0赞
Chema
5/22/2020
我认为,问题出在group by子句上
1赞
Chema
5/22/2020
如果您不显示一些数据示例,我们无能为力。
1赞
Chema
5/22/2020
我们无法弄清楚为什么代码会起作用,因为我们没有一些数据示例,但是,重要的是你学到了你所说的一些东西。
0赞
Bob K
5/22/2020
#2
SELECT COUNT(*) AS totalStalls
FROM tblOrders O
Where (select count(*) from tblItems I
where I.accountID = O.accountID and O.saleDate = @saleDate)
> 0
这应该为您提供订单计数,其中商品计数大于零,其中订单销售日期 = @saleDate。
评论
0赞
mark davies
5/22/2020
谢谢。这给了我:关键字“Where”附近的语法错误
0赞
mark davies
5/22/2020
对不起,我的错误。没有语法错误,但结果仍然不太正确,所以我只是想弄清楚它到底在做什么。当我弄清楚如何发布数据时,我会发布数据。
0赞
mark davies
5/22/2020
#3
我在以前为我编写的一些代码中发现了这一点,并且它有效。不完全确定与此处的建议有什么区别?
SELECT COUNT(*) AS totalCount
FROM tblOrders
WHERE saleDate = @saleDate AND
((SELECT COUNT(*) AS Expr1
FROM tblItems
WHERE (accountID = tblOrders.accountID) AND (saleDate = @saleDate)) > 0)
评论