Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка и заполнение пробелов / 6 сообщений из 6, страница 1 из 1
05.05.2016, 00:18
    #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
05.05.2016, 00:51
    #39229519
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка и заполнение пробелов
Evgeniy57,

Используйте опорную таблицу с датами. К ней внешним левым соединением (LEFT JOIN) подключите вашу таблицу. А потом "пишем GROUP BY, COUNT и всё работает".
...
Рейтинг: 0 / 0
05.05.2016, 00:57
    #39229523
Evgeniy57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка и заполнение пробелов
miksoft, о таком решении я знаю, но к сожалению - мне оно не подходит.
А что программно создавать столбцы с днями? Насколько это костыльное решение?
...
Рейтинг: 0 / 0
05.05.2016, 03:00
    #39229535
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка и заполнение пробелов
Evgeniy57,
можно использовать любую таблицу с числом записей чуть больше необходимого. и программно создать столбец
...
Рейтинг: 0 / 0
05.05.2016, 05:14
    #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
05.05.2016, 10:31
    #39229651
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка и заполнение пробелов
Сервер умеет возвращать тллько те данные, которые у него есть.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка и заполнение пробелов / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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