Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать даты с интервалом в день / 9 сообщений из 9, страница 1 из 1
26.11.2013, 19:52:31
    #38478948
headzero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать даты с интервалом в день
Мне нужно выбрать данные и сгруппировать по датам, причем интервал должен быть в один день.
Допустим в таблице с двумя колонками |date |value| :
|2013-07-21 |239 |
|2013-08-20 |87 |

Мне нужно сгрупировать выборку по датам,тоесть что бы в выборке было не 2 результата, а все в интервале 2013-07-21 - 2013-08-20с интервалом в день, тоесть для 2013-07-21, 2013-07-22, 2013-07-23 ... 2013-08-20.

Помогите пожайлуста, как это сделать
...
Рейтинг: 0 / 0
26.11.2013, 23:21:39
    #38479123
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать даты с интервалом в день
headzeroкак это сделать
...запрос, наверна, нада написать ...
...
Рейтинг: 0 / 0
27.11.2013, 08:27:57
    #38479273
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать даты с интервалом в день
headzeroчто бы в выборке былоИ дальше надо показать (тег [ csv ] в помощь), что именно должно быть в результате. Потому что вот я, например, не понял, как он, результат, должен выглядеть.
...
Рейтинг: 0 / 0
27.11.2013, 11:43:23
    #38479510
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать даты с интервалом в день
headzero,

опорная таблица дат нужна
...
Рейтинг: 0 / 0
27.11.2013, 13:18:49
    #38479756
headzero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать даты с интервалом в день
artas,
Вот таблица values (для примера)
datevalue2013-07-21 2392013-08-20 87

Идет выборка по двум датам, начальной и конечной.

Код: sql
1.
 SELECT SUM(value) FROM values where date >='startDate' AND date<='endDate' GROUP BY date 



Но группироваться должно не по только тем датам, которые попали результат запроса, по каждой дате из интервала между
startDate и endDate с интервалом в один день.

Например, если я выбираю из таблици values(которая приведена выше) и startDate = 2013-07-21, endDate=2013-08-20, то в результе я хочу получить такую таблицу:

dateSUM(value)2013-07-21 2392013-07-22 02013-07-23 0............2013-08-19 02013-08-20 87
...
Рейтинг: 0 / 0
27.11.2013, 13:44:53
    #38479820
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать даты с интервалом в день
headzero,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
<...>
from (
 таблица_со_всеми_нужными_датами
) t0
left join (
 ваш_запрос
) t1 on t0.дата=t1.дата
<...>

Таблицу с датами можно сгенерить заранее.
...
Рейтинг: 0 / 0
27.11.2013, 16:02:53
    #38480156
headzero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать даты с интервалом в день
tanglir,
Спасибо. А как сгенерить эти даты?
...
Рейтинг: 0 / 0
27.11.2013, 17:42:12
    #38480314
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать даты с интервалом в день
...
Рейтинг: 0 / 0
27.11.2013, 17:54:44
    #38480342
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать даты с интервалом в день
headzero,

дато такую процедуру написали

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE PROCEDURE `proc_temp_calendar`(
        IN begin_date DATE,
        IN end_date DATE
    )
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
    
    SET @last_date = begin_date;
    
    DROP TABLE IF EXISTS temp_calendar;
    
    CREATE TEMPORARY TABLE temp_calendar(
           date DATE NOT NULL,
           KEY days (date)
    ) ENGINE = MyIsam;
    
    WHILE @last_date <= end_date DO
       insert into temp_calendar(date) values(@last_date);
       SET @last_date = DATE_ADD(@last_date, interval 1 day);
    END WHILE;
  
END;


думаю разберешся как вызывать
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать даты с интервалом в день / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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