1

在 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 个计数的方法。即,如果“2012 年 6 月 13 日”没有条目,我希望它在该日期返回 0 的“总计”。

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

我找到了这个答案:MySQL 如何在范围内填充缺失的日期?:我现在有一个“数字”表,但无法成功地使解决方案适应我的查询。我假设的一些速记语法使我难以理解这些概念。

4

1 回答 1

0

通过进行上述选择,您将确切知道何时找到零结果。需要做的只是范围的比较。例如,如果您返回以下记录集:

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

很明显,JUN 第三和 JUN 第四没有条目,因此默认情况下它们为零。应该可以通过函数找到这些值的范围。

更新

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

ID, DATE, COUNT

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

于 2012-08-02T14:17:38.310 回答