2017-09-05 7 views
0

mysql dbから生成された時系列グラフの空の日付を含める最も良い方法は何ですか?私は特定の日に販売赤い車のすべてを言って取得するクエリを実行する場合日付ギャップの記入ajaxコールのmysqlクエリ

私は実行することができます:彼らはIEの

SELECT count(car_sale_order) as 'count', DATE(sale_date) as 'sale_date' 
FROM car_sales 
WHERE colour = "red"; 

をが、結果は日付の穴を持つことができ

------------------ 
count | sale_date 
------------------ 
2  | 2017-09-03 
10 | 2017-09-04 
1  | 2017-09-07 
23 | 2017-09-09 
45 | 2017-09-10 
2  | 2017-09-11 
21 | 2017-09-12 

idが本当に好きなときは:

------------------ 
count | sale_date 
------------------ 
2  | 2017-09-03 
10 | 2017-09-04 
0  | 2017-09-05 
0  | 2017-09-06 
1  | 2017-09-07 
0  | 2017-09-08 
23 | 2017-09-09 
45 | 2017-09-10 
2  | 2017-09-11 
21 | 2017-09-12 

私はPHPを使用しているので、私はその側でこのものを生成することができますが、ただ、結果セットを持つことが本当に便利だろうから、これを含めこれだけ

+2

これは役に立ちます。 https://www.plumislandmedia.net/mysql/filling-missing-data-sequences-cardinal-integers/ –

+0

これは本当に便利です - 病気を見てくれてありがとう – aarcarr

+1

チェックアウトhttps://stackoverflow.com/questions/9295616/how mysql-select-queries –

答えて

0

を考えてみましょ結果、私は、MySQLを探していますWhat is the most straightforward way to pad empty dates in sql results (on either mysql or perl end)? と同じではありません....行く


を取得calendar tableを使用してください。私はいつもあなたがあなたのテーブルに参加するすべての日付の行を持っているので、これが日付レポートを作成する最も信頼できる方法であることがわかっています。あなたの場合、次のようなものを使用することができます:

SELECT count(car_sale_order) as 'count', DATE(sale_date) as 'sale_date' 
FROM calendar_table 
LEFT JOIN car_sales ON calendar_table.date = car_sales.sale_date 
WHERE calendar_table.date BETWEEN '2017-01-01' and '2017-01-31' and colour = "red"; 
+1

ええ、私はこのアプローチを以前に見ましたが、それは私のために十分にきれいではありません。 – aarcarr