计算每个产品每天的条形码数量

时间:2013-07-03 07:54:37

标签: mysql group-by statistics

我有两张桌子。 barcodesbarcodes_entered

barcodes

id | product    | barcode
-------------------------
1  | product1   | 12345
2  | product2   | 23456
3  | product3   | 34567

barcodes_entered

barcode_id | timestamp 
--------------------------------
2          | 2013-07-01 00:00:00
2          | 2013-07-01 00:00:00
3          | 2013-07-01 00:00:00
2          | 2013-07-02 00:00:00
1          | 2013-07-02 00:00:00

我想弄清楚每种产品每天输入的条形码数量。

所以我上面的预期结果是:

product  | count  | date
------------------------------
product1 | 0      | 2013-07-01
product2 | 2      | 2013-07-01
product3 | 1      | 2013-07-01
product1 | 1      | 2013-07-02
product2 | 1      | 2013-07-02
product3 | 0      | 2013-07-02

我正在尝试写的查询看起来像这样:

SELECT product, COUNT( barcode_id ) AS count, DATE(  `timestamp` ) AS date
FROM barcodes_entered
LEFT JOIN barcodes ON barcodes.id = barcodes_entered.barcode_id
GROUP BY DATE(  `timestamp` ) ASC

不幸的是,这会产生以下结果:

product  | count  | date
------------------------------
product1 | 3      | 2013-07-01
product2 | 2      | 2013-07-02

从技术上讲,我认为我在问什么,我如何按日期分组,然后再按产品计算,同时计算所述产品的条形码数量?

2 个答案:

答案 0 :(得分:2)

dateproduct分组。

GROUP BY DATE(  `timestamp` ) ASC, product

<强>更新

要在结果中获得zero,我认为您应该使用JOIN代替LEFT JOIN

答案 1 :(得分:1)

从条形码中选择,然后加入barcodes_entered。 未经测试但应该有效。

SELECT product, COUNT( barcode_id ) AS count, DATE(  `timestamp` ) AS date
FROM barcodes
LEFT JOIN barcodes_entered ON barcodes.id = barcodes_entered.barcode_id
GROUP BY DATE(  `timestamp` ) ASC, product