【发布时间】:2012-04-07 06:04:51
【问题描述】:
我正在修改我的新闻系统的导航,并希望使用最少的 MySQL 查询来完成。我已经设法将这一切归结为一个查询,但似乎有问题。任何帮助将不胜感激。
我希望实现的是(字面上)以下事件概述,按年和月按层次排序,以及该月的事件数:
2012
--04 (3)
--02 (1)
--01 (1)
2011
--12 (3)
--11 (2)
--10 (3)
--09 (1)
--07 (1)
--02 (1)
我非常接近。我的查询如下:
SELECT start_date, date_format(start_date, "%Y") as year, date_format(start_date, "%m") as month FROM event ORDER BY start_date desc
那么,我的PHP循环如下:
$year = '';
$year_counter = 0;
$month = '';
$month_counter = 1;
while($row = mysql_fetch_assoc($result)){
if ( $year != $row['year'] ) {
$year = $row['year'];
$output .= $year.'<br />';
}
if ( $month == $row['month'] ) {
$month_counter++;
} else {
$month = $row['month'];
$output .= '--'.$month.' ('.$month_counter.')<br />';
$month_counter = 1;
}
}
它完美地生成了所有内容,除了每月的事件数,这似乎总是有一条线(你请看上面想要的结果的区别)。
2012
--04 (1)
--02 (3)
--01 (1)
2011
--12 (1)
--11 (3)
--10 (2)
--09 (3)
--07 (1)
--02 (1)
我整个下午都在修补这个问题,但没有成功。我认为最好把它留给绝对的专家。请帮忙?
【问题讨论】:
-
如果将月份循环放在年份 if 表达式中会发生什么?
-
如果我这样做,只会显示每年的第一个月...