powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка и заполнение пробелов
6 сообщений из 6, страница 1 из 1
Группировка и заполнение пробелов
    #39229507
Evgeniy57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Хочу обратиться за помощью с небольшой проблемой.

Пусть имеем таблицу вида:
id | user_id | day

В ней хранятся какие-то записи по юзерам, необходимо посчитать сколько записей у каждого юзера за каждый день, что бы получилось примерно так:
user_id | day | count
1 1 20
1 2 25
2 2 17

Все просто, пишем GROUP BY, COUNT и всё работает. Но необходимо так же вывести строки, где указано, что в этот день, у пользователя 0 записей - в примере должна добавиться еще одна строка:
user_id | day | count
2 1 0

Вот не знаю, как лучше сделать, что можете подсказать?
Проблема, мне кажется, очень простая, но я давно не работал с sql и уже подзабыл, как это делается.
...
Рейтинг: 0 / 0
Группировка и заполнение пробелов
    #39229519
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evgeniy57,

Используйте опорную таблицу с датами. К ней внешним левым соединением (LEFT JOIN) подключите вашу таблицу. А потом "пишем GROUP BY, COUNT и всё работает".
...
Рейтинг: 0 / 0
Группировка и заполнение пробелов
    #39229523
Evgeniy57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, о таком решении я знаю, но к сожалению - мне оно не подходит.
А что программно создавать столбцы с днями? Насколько это костыльное решение?
...
Рейтинг: 0 / 0
Группировка и заполнение пробелов
    #39229535
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evgeniy57,
можно использовать любую таблицу с числом записей чуть больше необходимого. и программно создать столбец
...
Рейтинг: 0 / 0
Группировка и заполнение пробелов
    #39229542
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к примеру так

Код: sql
1.
2.
3.
4.
5.
SET @d = NOW();
SELECT
  @d := DATE_ADD(@d, INTERVAL 1 DAY)  as D
FROM любая_таблица
WHERE @d < DATE_ADD(NOW(), INTERVAL 1 MONTH)
...
Рейтинг: 0 / 0
Группировка и заполнение пробелов
    #39229651
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сервер умеет возвращать тллько те данные, которые у него есть.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка и заполнение пробелов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]