PHP MySql:打印每月存档的总数

时间:2014-06-23 12:16:05

标签: php mysql

我需要按照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".....

我该如何打印?!

2 个答案:

答案 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`;

感谢