Группировка результатов дня рождения по месяцам - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть список пользователей и их дни рождения. Мне нужно распечатать список дней рождения для каждого месяца и сгруппировать по дням. Например:

Понедельник 24 (2): Герпина Дерпина, Джон Доу

Вторник, 27 (1): Николас Кейдж

Пятница, 28 (1): Майкл Джексон

Как я могу добиться этого с помощью одного вызова SQL? Если я сгруппирую их таким образом, я потеряю записи:

SELECT COUNT(*) FROM user GROUP BY MONTH(birthday)

Есть идеи? (Я использую mysql + php)

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

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

1 голос
/ 11 апреля 2011
SELECT MONTH(birthday) month,
       FORMAT(birthday, '%W %D') day,
       COUNT(user) count,
       GROUP_CONCAT(user SEPARATOR ',') users
FROM table
GROUP BY MONTH(birthday), FORMAT(birthday, '%W %D')
...