Меню архива блога PHP MYSQL по годам и месяцам

Я ищу эффективный способ собрать все сообщения в блоге в меню следующего формата:

2012

  • август(6)
  • Сентябрь(4)
  • Второе октября)

Месяц, представляющий месяц (очевидно), и значение в скобках, представляющее количество сообщений в этом месяце. После нажатия будет выполнен поиск всех сообщений в этом месяце, в этом году.

Мне нужно, чтобы он был динамичным, автоматически подбирая ноябрь, когда сообщение создается в этом месяце, и продолжая в декабре, в 2013 году и т. д. и т. д.

Все, что у меня есть, это временная метка UNIX для каждого сообщения. Мне бы очень хотелось избежать использования отдельных функций для сбора бесконечных сложных массивов и т.д.

Любая помощь высоко ценится.


person digiwig    schedule 24.10.2012    source источник


Ответы (1)


Из вашего вопроса я понимаю, что вы пытаетесь придумать запрос для группировки ряда элементов по месяцам и годам. Следующее должно помочь:

SELECT 
    YEAR(dateField) AS YEAR, 
    MONTH(dateField) AS MONTH,
    COUNT(*) AS TOTAL 
FROM table 
GROUP BY YEAR, MONTH

Очевидно, что «dateField» — это имя вашего столбца datetime/timestamp, а «table» — это имя вашей таблицы.

Дополнительная информация о предложении GROUP BY и агрегатных функциях (таких как использованная выше функция COUNT(*)): здесь.

person Pedro Cordeiro    schedule 24.10.2012
comment
Это работает отлично. Мне нужно было внести коррективы, см. ниже: SELECT YEAR(FROM_UNIXTIME(dateField)) AS YEAR, MONTHNAME(FROM_UNIXTIME(dateField)) AS MONTH, COUNT(*) AS TOTAL from table GROUP BY YEAR, MONTH - person digiwig; 25.10.2012