在some_table中创建的每个“记录”都有一个“日期”。
some_table:
-------------------------
id | record | my_date
-------------------------
1 | rec_a | 2012-08-01
2 | rec_b | 2012-08-02
3 | rec_c | 2012-08-02
4 | rec_d | 2012-08-04
5 | rec_e | 2012-08-06
6 | rec_f | 2012-08-06
my_query:
start_date和end_date来自输入
SELECT
my_date, COUNT(my_date) AS _count
FROM
some_table
WHERE
my_date
BETWEEN
start_date
AND
end_date
GROUP BY
DAY (my_date)
数组:
while($result = mysql_fetch_assoc($my_query))
{
$dataset[] = array($result['my_date'],intval($result['_count']));
}
json_encode($dataset);
这将使:
["2012-08-01",1]
["2012-08-02",2]
["2012-08-04",4]
["2012-08-06",6]
获得没有这类计数的日子的最佳方式是什么?
["2012-08-01",1]
["2012-08-02",2]
["2012-08-03",0] <--
["2012-08-04",4]
["2012-08-05",0] <--
["2012-08-06",6]
答案 0 :(得分:0)
可能最简单的方法是创建一个包含所有可能日期的表。然后,您将从该表中进行选择,并将其连接到现有表格。
看起来很糟糕,但这是一种非常常见的模式,特别是在数据仓库中。