2016-07-15 56 views
0

我有一個表的樣子:

id | date  | count 
----------------------- 
1 | 2016-07-13 | 2 
2 | 2016-07-13 | 3 
3 | 2016-07-13 | 1 
4 | 2016-07-15 | 12 
5 | 2016-07-15 | 1 
6 | 2016-07-15 | 4 

這是我的查詢

$test_query = $wpdb->get_results(" 
    SELECT 
    SUM(count) AS count, 
    date 
    FROM 
    ".$wpdb->prefix."statistics 
    WHERE 
    date BETWEEN DATE_SUB('2016-07-15', INTERVAL 2 DAY) AND '2016-07-15' 
    GROUP BY DATE(date) 
"); 

我運行查詢,得到的結果

2016-07-13 | 6 
2016-07-15 | 17 

此工作良好,只有我有一個間隔爲3天,結果從2016-07-14的日期不顯示出來。我使用的圖表值需要爲空或0.

2016-07-14值是0還是有辦法?

2016-07-13 | 6 
2016-07-14 | 0 
2016-07-15 | 17 
+0

如果您的表中沒有「2016-07-14」日期,那麼將無法生成值爲0的「2016-07-14」條目。或者您將不得不使用某些巫術加入例如,包含未來3年的每個日期的表格。 – Julqas

回答

0

我找到一個解決方案。我有一個startdate和一個enddate。隨着勞斯我得到他們之間的所有日期。然後我將它們與數據庫中的日期進行比較。

謝謝大家的反應!

0

你可以試試下面的查詢:

SELECT 
v.selected_date, 
COALESCE(YT.count,0) AS count 
FROM 
(select adddate(DATE_SUB('2016-07-15', INTERVAL 2 DAY),t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from 
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0, 
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1, 
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2, 
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3, 
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v 

LEFT JOIN 
(
    SELECT 
    SUM(count) AS count, 
    date 
    FROM 
    statistics #Your table name 
    WHERE 
    date BETWEEN DATE_SUB('2016-07-15', INTERVAL 2 DAY) AND '2016-07-15' 
    GROUP BY DATE(date) 
) AS YT 
ON YT.date = v.selected_date 
WHERE v.selected_date BETWEEN DATE_SUB('2016-07-15', INTERVAL 2 DAY) AND '2016-07-15' ; 

注:

高亮顯示的部分將根據您指定的日期範圍內變化。

在第一個突出顯示的部分放置日期範圍的開始日期。

在第二個和第三個突出顯示的部分中,將您的整個日期範圍像您在給定的查詢中一樣。

enter image description here