Wordpress $ wpbd-> get_results即使为空也会返回日期

时间:2016-07-15 13:59:56

标签: php mysql database wordpress

我的表格如下:

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我找到了解决方案。我有一个开始日期和结束日期。使用for循环,我得到它们之间的所有日期。然后我将它们与数据库中的日期进行比较。

谢谢大家的反应!