2017-09-05 26 views
0

什麼是包含從MySQL數據庫生成的時間序列圖的空日期的最佳方式。填寫日期間隔mysql查詢ajax調用

如果我運行一個查詢來獲取說所有的紅色轎車在某一天賣的,我可以運行:

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所以知道,我可以生成這個東西在那邊,但它將是非常方便的,只是有結果集包括這從一開始去....


這是不一樣的What is the most straightforward way to pad empty dates in sql results (on either mysql or perl end)? 我正在尋找一個MySQL只導致

+2

這可能有所幫助。 https://www.plumislandmedia.net/mysql/filling-missing-data-sequences-cardinal-integers/ –

+0

這看起來真的很方便 - 生病看看謝謝 – aarcarr

+1

結帳https://stackoverflow.com/questions/9295616/how mysql-select-query –

回答

0

考慮使用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