如何填写范围内的缺失日期

时间:2012-08-02 14:03:35

标签: mysql count

在MySQL中我有这个查询:

SELECT COUNT( * ) AS `total` , DAYOFYEAR( FROM_UNIXTIME( unixtimeissued ) ) AS `dayOfYear` , YEAR( FROM_UNIXTIME( unixtimeissued ) ) AS `year`
    FROM flex_information
    WHERE unixtimeissued >= 'giventime'
    GROUP BY dayOfYear, year
    ORDER BY year, dayOfYear
    LIMIT 0 , 300

这样可以正常工作,除非我找不到在特定日期没有条目的情况下插入0计数的方法。即如果没有“6/13/2012”的条目,我希望它在该日期返回0的“总数”。

编辑:此数据将用于绘制折线图,​​因此我需要0个与日期配对的计数才能成功显示准确的图表 - 我可以在PHP中填写零值但MySQL查询的系统密集程度要低得多。

我找到了这个答案:MySQL how to fill missing dates in range?:我现在有一个'数字'表,但无法成功地使解决方案适应我的查询。我假设的一些简写语法使我很难理解这些概念。

1 个答案:

答案 0 :(得分:0)

通过执行上述选择,您将确切知道何时找到零结果。应该发生的所有事情都是范围的比较。例如,如果您获得以下记录:

ID     DATE   
1      JUN first    
2      JUN second
3      JUN fifth
4      JUN sixth  

很明显,JUN 3rd和JUN 4th没有条目,所以默认情况下它们将为零。应该可以通过函数找到这些值的范围。

更新

如果架构被修改,那么你就可以解决这个问题:

ID, DATE, COUNT

通过跟踪数据库中的计数,可以随时获得该数字。应该注意的是,如果要发生许多更新,随着表的增长,该过程将变得非常耗时。