我正在修改我的新闻系统的导航,并希望使用最小的MySQL查询来完成此操作。我已经设法将这一切都归结为一个查询,但似乎有些错误。任何帮助将不胜感激。用PHP对层次排序的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)
我一直在修补这整个下午没有成功。我认为最好把它交给绝对的专家。一只手好吗?
如果在表达式中放置月份循环,会发生什么情况? – 2012-03-22 16:33:39
如果我这样做,只显示每年的第一个月... – maartenmachiels 2012-03-22 17:54:04