我需要按照json格式按年份(12个月)打印Total(count)新闻档案,如下所示:
输出:
["January:31","February:28","March:0","April:130","May:450","June:0","July:0","August:0","September:0","October:520","November:20","December:31"]
PHP代码:
SELECT COUNT(*) AS id,
YEAR(date) as `year`,
MONTH(date) as `month`,
MONTHNAME(date) as `month_name`,
FROM `aticle`
GROUP BY `year`, `month`;
注意: if we dont have news in any month print:0
即:"March:0","July:0".....
我该如何打印?!
答案 0 :(得分:0)
您可以通过为每个月/年组合生成一行来实现此目的。假设每个月和每年至少有一个值,最简单的方法是:
SELECT COUNT(*) AS id, y.yr, m.mon, m.mname
FROM (select distinct year(date) as yr from article) y cross join
(select distinct month(date) as mon, monthname(date) as mname from article) m left join
article a
on year(a.date) = y.yr and month(a.date) = m.mon
GROUP BY y.yr, m.mon;
否则,你必须找到一种方法来获取所有月份的列表,使用类似的东西:
select 1 as mon, 'Jan' as mname union all
. . .
答案 1 :(得分:0)
您可以使用IFNULL
检查是否找不到数据0
..
请尝试以下查询。
SELECT IFNULL(COUNT(*),0) AS id, YEAR(date) as `year`, MONTH(date) as `month`, MONTHNAME(date) as `month_name`,FROM `aticle`GROUP BY `year`, `month`;
感谢