Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с запросом(хп) [D7, Firebird 1.5]


Domkrat ©   (2004-07-27 14:56:00) 

Ув. Мастера. Подскажите пожалуйста.

Таблица: MOVE

ID    LS    OLDVALUE  NEWVALUE   MOVEDATE
1      1      Петя        Коля                  
2      1      Коля        Саша
3      1      Саша       Игорь
4      1      Игорь       Вася 01.01.2004

Требуется  одна строка

ID   LS    OLDVALUE  NEWVALUE  MOVEDATE

     1      Петя       Вася  01.01.2004


Domkrat   (2004-07-27 15:31:00) [1]

Вариант Sandman25 ©   (27.07.04 15:03) [2] удовлетворяет всем условиям.
Всем спасибо.


Sandman25   (2004-07-27 15:28:00) [2]

понятно


dimds   (2004-07-27 15:26:00) [3]

ну это примерный вариант разумеется нужные условия и выходные параметры нужно подставить


Sandman25   (2004-07-27 15:24:00) [4]

[7] dimds   (27.07.04 15:23)

Во вложенных select должно быть where.


dimds   (2004-07-27 15:23:00) [5]

select pole1...poleN where id=(select min(id) from table) into
[outparams];
select pol1....polen where id=(select max(id) from table) into
[outparams];
suspend;


Domkrat   (2004-07-27 15:14:00) [6]

Ведется движение абонентов в течении месяца, и требуется
взять только начальные и конечные значения определенных полей
для составления отчетности.


dimds   (2004-07-27 15:09:00) [7]

а прынцип выборки какой?


Sandman25   (2004-07-27 15:08:00) [8]

>Спасибо большое, но и первый запрос довольно быстро сработал.

Это заслуга оптимизатора, он оказался на высоте.


Domkrat   (2004-07-27 15:07:00) [9]

Спасибо большое, но и первый запрос довольно быстро сработал.
Попробую написать хп.


Sandman25   (2004-07-27 15:03:00) [10]

Лучше написать ХП с
select min(id), max(id), ls
 from move
 group by id
и в цикле перебирать получаемые значения и извлекать оставшиеся значения


Sandman25   (2004-07-27 15:01:00) [11]

select ls,
(select oldvalue from move m1 where m.ls=m1.ls and
id=(select min(id) from move m2 where m2.ls=m.ls)),
(select newvalue from move m1 where m.ls=m1.ls and
id=(select max(id) from move m2 where m2.ls=m.ls))
 from move m
 group by ls


Наверх

Титульная страница Поиск, карта сайта Написать письмо