このような質問がいくつかありますが、私の特定の問題に対する答えが見つかりません。MySQL - 日付のゼロカウントを含む
は以下の表を考えてみましょう:
| DateOfSale | food | customerid |
|---------------------------|--------------|------------|
| January, 03 2017 00:00:00 | pizza | 1 |
| January, 03 2017 00:00:00 | pizza | 2 |
| January, 03 2017 00:00:00 | pizza | 3 |
| January, 03 2017 00:00:00 | fish & chips | 4 |
| January, 02 2017 00:00:00 | pizza | 4 |
| January, 02 2017 00:00:00 | pizza | 4 |
| January, 02 2017 00:00:00 | pizza | 5 |
| January, 02 2017 00:00:00 | fish & chips | 6 |
| January, 01 2017 00:00:00 | pizza | 7 |
| January, 01 2017 00:00:00 | pizza | 8 |
| January, 01 2017 00:00:00 | pizza | 9 |
私たちはピザや魚&チップを販売しています。
&個の魚を1月1日に下記の結果で販売していないことに気づくでしょうが、私は0個の販売台数を見たいと思っています。また、1月4日の売上は記録されておらず、ピザと魚の両方について0を表示したい&チップ。これが私が日付参照テーブルから日付を取得する理由です - その結果、売上がない場合でも日付が存在します。
SELECT DATE(d.thedate) as DateOfSale, f.food, count(s.customerid) as Sales
FROM ref_date d
LEFT JOIN sales s on d.thedate = s.saledate
INNER JOIN foods f on s.foodid = f.id
GROUP BY DATE(d.thedate), f.food
とデータとの完全なフィドルはここにある:
| DateOfSale | food | Sales |
|---------------------------|--------------|-------|
| January, 01 2017 00:00:00 | pizza | 3 |
| January, 02 2017 00:00:00 | fish & chips | 1 |
| January, 02 2017 00:00:00 | pizza | 3 |
| January, 03 2017 00:00:00 | fish & chips | 1 |
| January, 03 2017 00:00:00 | pizza | 3 |
この結果のコードはhttp://sqlfiddle.com/#!9/ff9dc/2
をありがとう!彼らが私の頭を傷つけるので、私は十字結合を嫌う。まだ私として混乱しているこれを読んでいる人のために、ここにいくつかの良い読書があります:http://stackoverflow.com/questions/17759687/cross-join-vs-inner-join-in-sql-server-2008 – Warren