Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013 Откуда: Санкт-Петербург
Помог: 6 раз(а)
Добрый день all!
У меня сейчас есть реализация запроса (MySQL), но вот подумал а нельзя ли его упростить? А как не знаю, вполне возможно что и нельзя.
Допустим есть пустая таблица с полем id и date (таймштамп). Возможен ли такой запрос, чтобы получить массив дата в формате день-месяц и количество id за эту дату. Но так как таблица пустая количество будет 0;
Т.е. в результате массив результата запроса за последние 10 дней
date = 14.03
count_id = 0
date = 15.03
count_id = 0
date = 16.03
count_id = 0
.......
date = 23.03
count_id = 0
Если бред спросил, соори....
ЗЫ: Т.е. у меня стоит задача получить данные за промежуток времени, даже если на определеную дату ничего нет.
----- Умные мысли приходят тогда, когда все глупости уже сделаны...
Мелкий
Отправлено: 23 Марта, 2016 - 16:55:28
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Mysql? Только какими-то невнятными костылями. Если очень надо, то можно. Но проще на приложении. Например, сгенерировать таблицу дат из одного поля типа date и к ней left join'ить аггрегацию по данным.
Под postgresql - элементарный generate_series
----- PostgreSQL DBA
Flash_PR
Отправлено: 23 Марта, 2016 - 16:59:21
Посетитель
Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013 Откуда: Санкт-Петербург
Помог: 6 раз(а)
Мелкий пишет:
Mysql? Только какими-то невнятными костылями. Если очень надо, то можно. Но проще на приложении. Например, сгенерировать таблицу дат из одного поля типа date и к ней left join'ить аггрегацию по данным.
Ну в общем сейчас на приложении и есть. Думал есть в mysql функция итерации дат, о которой не знал. Ладно, спасибо все равно. Нельзя, так нельзя....решим по другому.
----- Умные мысли приходят тогда, когда все глупости уже сделаны...
OrmaJever
Отправлено: 23 Марта, 2016 - 21:09:25
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Мелкий
Отправлено: 23 Марта, 2016 - 21:36:44
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
OrmaJever пишет:
А это разве сильно костыль?
Что будет, если в таблице не будет ни одной записи за какую-нибудь дату?
Правильно, этой даты не будет в результате. А вопрос в том, как сделать, чтобы дата в выборке была, но с count=0
----- PostgreSQL DBA
OrmaJever
Отправлено: 23 Марта, 2016 - 22:13:33
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Мелкий пишет:
А вопрос в том, как сделать, чтобы дата в выборке была, но с count=0
Забирать из базы всё что есть, а затем в php циклом по этому же интервалу дополнять не существующие ячейки (Добавление) Мелкий а для постгре ты предлагаешь примерно такой вариант?
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Мелкий
Отправлено: 24 Марта, 2016 - 09:48:17
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
OrmaJever пишет:
Забирать из базы всё что есть, а затем в php циклом по этому же интервалу дополнять не существующие ячейки
Ага. Ну я и говорю:
Мелкий пишет:
Если очень надо, то можно. Но проще на приложении.
Для postgresql - да, такое.
----- PostgreSQL DBA
Flash_PR
Отправлено: 24 Марта, 2016 - 10:48:30
Посетитель
Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013 Откуда: Санкт-Петербург
Помог: 6 раз(а)
OrmaJever пишет:
А это разве сильно костыль?
Именно такой и есть у меня запрос, но мелкий правильно сказал, что при пустой таблице ничего не будет. Или если за какое то число не будет записей, то этой даты не будет. А так как данные используются для построения графика, нужно без прерываний по датам.
В общем оставил как было изначально. Выборка-> цикл за нужный период.
Временный массив куда записываю дату и количество 0. Дальше проверяю с выборкой из базы, если на эту дату есть какая то сумма из базы, перезаписываю количество.
ЗЫ: Хотелось именно про несуществующие даты в базе, что бы при выборке дополнялись с нулевым количеством. Но мелкий сразу сказал что только костылями, или как сразу сделал на приложении. Можно конечно через UNION сделать наверное, но это будет костыль.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.