我有两张桌子。 barcodes
和barcodes_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
从技术上讲,我认为我在问什么,我如何按日期分组,然后再按产品计算,同时计算所述产品的条形码数量?
答案 0 :(得分:2)
与date
和product
分组。
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