0

私は2つのテーブルを持っています。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

各商品の 1 日あたりのバーコード入力数を把握しようとしています。

したがって、上記からの私の期待される結果は次のようになります。

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

技術的には、が求めているのは、製品に入力されたバーコードの数を数えながら、日付でグループ化し、次に製品でグループ化するにはどうすればよいですか?

4

2 に答える 2

2

dateと の両方でグループ化しproductます。

GROUP BY DATE(  `timestamp` ) ASC, product

アップデート

結果を得るには、代わりにzero使用する必要があると思いますJOINLEFT JOIN

于 2013-07-03T07:57:19.357 に答える
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
于 2013-07-03T08:05:01.787 に答える