Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / view vs function / 6 сообщений из 6, страница 1 из 1
11.12.2006, 15:08
    #34190475
romand
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
view vs function
Доброго дня!
Есть таблица которая содержит поле даты (праймари кей) и 24 поля (кол-во часов сутках). Необходимо по запросу с определённой датой выодить знечения последнего (24-го часа) предыдущих суток + значения заданой в запросе даты. Делал следующим способом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE OR REPLACE VIEW v10014 AS
 SELECT date, pid, uid, (SELECT h24 FROM m10014 WHERE date=date- 1 ) AS h0,
 h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11, h12, h13, h14,
 h15, h16, h17, h18, h19, h20, h21, h22, h23, h24 
 FROM m10014;

select * from v10014
where date = '2006-12-02' and uid =  137 ;
в результате h0 получаем NULL.
Пришлось реализовать с помощью процедуры. Можно ли реализовать это с помощью view?

2. Можна ли штатными средствами постргреса выловить дату перехода на летнее/зимнее время?
...
Рейтинг: 0 / 0
11.12.2006, 15:36
    #34190590
Serik.Akhmetov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
view vs function
romand
Код: plaintext
WHERE date=date- 1 


Как понять такую констукцию ?
Используйте псевдонимы.
...
Рейтинг: 0 / 0
11.12.2006, 15:43
    #34190614
Serik.Akhmetov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
view vs function
Код: plaintext
DATE
является ключевым словом SQL, лучше назвать столбец иначе.
...
Рейтинг: 0 / 0
11.12.2006, 15:49
    #34190652
romand
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
view vs function
Можно подробнее на этом примере?
ато сдаётся что средствами view (без функции) тут не обойтись.
...
Рейтинг: 0 / 0
11.12.2006, 16:08
    #34190732
Jelis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
view vs function
Код: plaintext
1.
2.
3.
4.
5.
 SELECT T1.work_date, pid, uid, 
   (SELECT h24 FROM m10014 AS T2 WHERE T2.work_date = T1.work_date.date - '1 day'::interval) AS h0,
 h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11, h12, h13, h14,
 h15, h16, h17, h18, h19, h20, h21, h22, h23, h24 
 FROM m10014 AS T1;
...
Рейтинг: 0 / 0
11.12.2006, 16:42
    #34190926
romand
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
view vs function
Спасибо большое!
рабтает, правда не совсем понял как

Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT t1.dt, pid, uid, 
(SELECT h24 FROM m10014 as t2 WHERE t2.uid=t1.uid and t2.dt=t1.dt- 1 ) AS h0,
 h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11, h12, h13, h14,
 h15, h16, h17, h18, h19, h20, h21, h22, h23, h24 
 FROM m10014 as t1
where dt = '2006-12-07' and uid =  129 ;

чем в данном случае являются t1 и t2?

уже понял:
alias
A substitute name for the FROM item containing the alias. An alias is used for brevity or to eliminate ambiguity for self-joins (where the same table is scanned multiple times). When an alias is provided, it completely hides the actual name of the table or function; for example given FROM foo AS f, the remainder of the SELECT must refer to this FROM item as f not foo. If an alias is written, a column alias list can also be written to provide substitute names for one or more columns of the table.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / view vs function / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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