我想从表中选择数据,得到的结果在JavaScript和图形打印选择数据(X =日期,Y =数字)SQL - 与默认值的周期
我有以下DATA
表(注意:我试图把它的降价使其显示为一个HTML表格,但它似乎并不工作):
| date | number |
|---------|--------|
| 2015-01 | 12 |
| 2015-02 | 7 |
| 2015-04 | 4 |
和下面的SQL选择:
SELECT date_format(date, '%Y-%m') AS date, number
FROM DATA
WHERE date >= '2015-01' AND date <= '2015-05'
GROUP BY date
ORDER BY date;
哪给我和输出完全一样。但是,如果月份没有记录,我想要的是每个月的行数为0
。举例来说,三月不被记录在数据库中,所以我想要的结果:
| date | number |
|---------|--------|
| 2015-01 | 12 |
| 2015-02 | 7 |
| 2015-03 | 0 |
| 2015-04 | 4 |
| 2015-05 | 0 |
表进入五月,因为在选择我要1至5月每月。
问题是:有没有办法在SQL中完成它,还是必须在JavaScript中后处理结果以在我的最终表中添加空的月份?
感谢您的帮助
编辑:在开始和结束日期是可变的,可以覆盖数年。所以,我想这是可以做到的东西与包含月份一个特殊的表,但我不知道如何... 如果答案是进行后处理,这是确定(令人失望,但OK ^^)
edit2:问题是“缺口填充”所述@mauro。它在MySQL中看起来相当复杂,所以我要后处理我的请求。
看到How to fill date gaps in MySQL?
这是一个想法。问题是,开始日期和结束日期是可变的,可以覆盖几年:/我正在编辑我的问题 我希望SQL有一种可以实现我的愿望的日期计算器... –
@Rémi与其他数据库 - 具有“缺口填充”能力 - 它会容易得多,而不是“粗鲁”:-) – mauro
“缺口填充”!与正确的关键字,我得到更好的搜索结果:) https://stackoverflow.com/questions/1877874/how-to-fill-date-gaps-in-mysql 看来,在MySQL中它是复杂的,所以我想我会后处理,因为它看起来非常难看,为此创建临时表...但我不知道什么是最好的表现。 谢谢! –