【问题标题】:SQL COUNT DISTINCT values tied to record via JOINSQL COUNT DISTINCT 值通过 JOIN 绑定到记录
【发布时间】:2013-12-01 16:15:52
【问题描述】:

我有 2 张桌子:

库存

StockID  |   ItemName   
1        |   hat           
2        |   hammer       
3        |   banana         
4        |   elephant    
5        |   book   

和篮子

BasketID   |   StockID   | Quantity
1          |   3         | 5
2          |   2         | 20
3          |   1         | 7
4          |   2         | 60
5          |   5         | 23
6          |   1         | 17
7          |   3         | 3
8          |   4         | 6
9          |   3         | 1
10         |   2         | 1
11         |   2         | 13

我正在尝试进行 SQL 查询,输出 StockID、ItemName、总销售数量和该项目的订单数。

我有这个:

SELECT stock.StockID, stock.ItemName, SUM( basket.Quantity ) AS QuantitySold
FROM stock
JOIN basket ON stock.StockID = basket.StockID
GROUP BY stock.Itemname
ORDER BY stock.StockID
LIMIT 0 , 30

效果很好,但是当我尝试添加时:

COUNT (DISTINCT basket.BasketID)

我只是收到一条消息说我有一个语法错误。

我对这一切都很陌生,如果我的逻辑有误,很抱歉,但不应该只计算与 stockID 相关的不同值,因为它与销售数量的总和差不多,它定位所有与购物篮表中的 stockID 相关联的 basket.Quantity 值。

非常感谢所有帮助 -Tom

【问题讨论】:

    标签: mysql sql count distinct


    【解决方案1】:

    不确定这是否是您问题的完整答案,但我认为在 MySQL 中,您不能像使用 COUNT 那样在函数名称和前括号之间留一个空格。

    【讨论】:

    • 啊哈哈哈,删除了空间,它工作,总是简单的事情。谢谢:)
    • 来自dev.mysql.com/doc/refman/5.0/en/functions.html 的手册:“默认情况下,函数名和它后面的括号之间不能有空格。”编辑:任何其他数据库应用程序都可以。
    • 哎呀,你完全正确。有趣的是,使用if ( 3 = 3 , 1, 2 ) 甚至MOD ( 29, 9 ) 是合法的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多