Я пересматриваю навигацию моей системы новостей и хотел бы сделать это, используя минимальные запросы 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)
Я возился с этим весь день безуспешно.Я думаю, что лучше оставить это абсолютным экспертам.Рука, пожалуйста?