Mysql: количество записей (включая ноль) в месяц - PullRequest
5 голосов
/ 15 августа 2010

Я пытаюсь подсчитать записи в моей таблице и сгруппировать их по дате.Мой текущий запрос выглядит примерно так:

SELECT
   count(*), 
   MONTH(time) as month,
   YEAR(time) as year
FROM
   myTable
GROUP BY
   month, year
ORDER BY
   year, month

Это работает, за исключением того, что я также хотел бы получить счет за месяцы, в которых нет записей.

Может ли кто-нибудь дать совет / предложение о том, как этого добиться?

1 Ответ

2 голосов
/ 15 августа 2010

Самый простой способ сделать это в MySQL - создать таблицу с именем months, в которой перечислены все интересующие вас месяцы, и использовать левое соединение с вашей таблицей.

SELECT
   YEAR(time) AS year
   MONTH(time) AS month,
   COUNT(myTable.year) AS cnt, 
FROM months
LEFT JOIN myTable 
    ON months.year = myTable.year
    AND months.month = myTable.month
GROUP BY months.year, months.month
ORDER BY months.year, months.month

Однако, поскольку это в основном проблема с презентацией, часто проще просто выполнить запрос, как вы уже делаете, и преобразовать результат в клиент (например, PHP).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...