Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / список дат / 14 сообщений из 14, страница 1 из 1
28.05.2007, 11:43
    #34554761
PythonWin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
Добрый день!

помогите пожалуйста с запросом:
есть две даты - например: '2007-04-1 00:00:00' и '2007-6-30 00:00:00'
нужно вывести все даты в этом интервеле, т.е.
'2007-04-1'
'2007-04-2'
'2007-04-3'
...
'2007-06-30'
...
Рейтинг: 0 / 0
28.05.2007, 11:46
    #34554773
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
Чем вывести? Напиши процедуру - на входе две даты, на выходе набор данных.
...
Рейтинг: 0 / 0
28.05.2007, 11:59
    #34554817
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
select date'2007-04-01'+generate_series(0,date'2007-06-30'-date'2007-04-01')
...
Рейтинг: 0 / 0
28.05.2007, 12:02
    #34554831
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
\\http://sql.ru/forum/actualsearch.aspx?search=generate_series&sin=0&a=&ma=0&bid=7&dt=-1&s=1&so=1
...
Рейтинг: 0 / 0
28.05.2007, 12:08
    #34554852
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
Во... как важно ХОРОШО знать особенности БД.

Скажи Microsoft'у "Прощай"!
...
Рейтинг: 0 / 0
28.05.2007, 12:38
    #34554958
PythonWin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
>select date'2007-04-01'+generate_series(0,date'2007-06-30'-date'2007-04-01')
а как совместить этот запрос и запрос из таблиц:
select table1.col1, table1.col2, sum(table2.col)
from table1
INNER JOIN table2 ON table1.id=table2.table1_id
INNER JOIN table3 ON table2.id = table3.table2_id and table3.date::date=date1::date;
где вместо date1 - элемент из запроса:
select date'2007-04-01'+generate_series(0,date'2007-06-30'-date'2007-04-01')
...
Рейтинг: 0 / 0
28.05.2007, 12:44
    #34554984
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
select table1.col1, table1.col2, sum(table2.col)
from table1
INNER JOIN table2 ON table1.id=table2.table1_id
INNER JOIN table3 ON table2.id = table3.table2_id and table3.date::date between date'2007-04-01' and date'2007-06-30';
...
Рейтинг: 0 / 0
28.05.2007, 12:56
    #34555022
PythonWin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
:) тогда мне не выведутся пустые значения, т.е. если нет в table3 записей удовлетворяющих table3.date::date=date1::date должно получиться в результате:
'2007-04-1', table1.col1, table1.col2, 0
'2007-04-2', table1.col1, table1.col2, 0
'2007-04-3', table1.col1, table1.col2, 756987
'2007-04-4', table1.col1, table1.col2, 0
..
'2007-06-30', table1.col1, table1.col2, 45
...
Рейтинг: 0 / 0
28.05.2007, 13:12
    #34555073
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
join ( select date'2007-04-01'+generate_series(0,date'2007-06-30'-date'2007-04-01') as c_d ) as t_d on ( t_d.c_d=table3.date::date)
...
Рейтинг: 0 / 0
28.05.2007, 14:13
    #34555259
PythonWin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
спасибо за примеры - к сожелению не то что мне нужно, видимо нужно использовать хранимую функцию...
...
Рейтинг: 0 / 0
29.05.2007, 11:57
    #34557367
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
с outer join пожалуй должно получиться
...
Рейтинг: 0 / 0
29.05.2007, 12:28
    #34557474
Paramedic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
Сделай селект из селекта, и объедени два запроса:

select t2.* from
(select table1.col1, table1.col2, sum(table2.col) as col3, table3.date
from table1
INNER JOIN table2 ON table1.id=table2.table1_id
INNER JOIN table3 ON table2.id = table3.table2_id ) as t2
left join
select t1.* from
(select date'2007-04-01'+generate_series(0,date'2007-06-30'-date'2007-04-01') as dte) as t1
on t1.dte = t2.date
...
Рейтинг: 0 / 0
29.05.2007, 12:32
    #34557494
Paramedic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
В данном случае right join, либо перекинуть селекты местами.
...
Рейтинг: 0 / 0
02.06.2007, 13:40
    #34569761
PythonWin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
всем спасибо за помощь!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / список дат / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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