【发布时间】:2015-12-03 21:52:16
【问题描述】:
我有两张关于 Access、Customer 和 Transaction 的表。我正在尝试查找按 Dogs (0-3) 排序的交易总数。 Transaction 表对购买的每件商品都有一行,因此一个 TransactionID 可以有多行。
这是我目前所拥有的:
SELECT Customer.Dogs, COUNT(Transaction.TransactionID) AS TotTrans
FROM Transaction, Customer
WHERE Transaction.CustomerID = Customer.CustomerID
GROUP BY Dogs
我得到了
Dogs | TotTrans
0 | 130104
1 | 59132
2 | 17811
3 | 1401
显然,这会计算事务表中的总行数,并按狗的数量对其进行排序。但是,它会计算交易表中的重复项(例如,TransactionID = 2 的三行,因为在该交易中客户购买了 3 件商品。计数显然包括额外的 2 行)。
当我尝试做COUNT(DISTINCT Transaction.TransactionID) 它不起作用,并且消息
“查询表达式 'COUNT(DISTINCT Transaction.TransactionID)' 中的语法错误(缺少运算符)。
我环顾四周,但似乎找不到解决方案。我认为部分问题源于我选择了两个属性。
如果有人可以帮助解释该做什么及其背后的逻辑,那就太好了!
【问题讨论】:
-
你用的是什么关系型数据库?
-
访问,抱歉,将编辑。
-
注意,顺便说一句,隐式连接(在 from 子句中有两个表)是一种不推荐使用的语法,建议切换到现代的显式语法:学习如何使用显式连接句法。 Aaron Bertrand 对此做了一些writting
-
我会调查的,谢谢!