C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Запрос с группировкой, Выбор самых новых записей
gen
Отправлено: 04.10.2005, 17:01


Дежурный стрелочник

Группа: Участник
Сообщений: 36



Привет всем.

Что-то туплю над тривиальным запросом.
Суть:
2 таблицы связанные по полю Cod
Object
(Id Serial,
Cod smallint,
Name text)

Property
(Cod smallint,
Shifr smallint,
Tm_rc timestamp)

Данные:
Object
1 1 Объект1
2 2 Объект2

Property
1 111 02.10.2005:10.05.10
1 333 03.10.2005:13.05.30
2 222 04.10.2005:11.14.14
2 444 04.10.2005:15.05.50
2 123 02.10.2005:15.25.50

Делаю объединение: select * from Object o,Property p where o.Cod=p.Cod
Нужно: отобрать все поля объединенных таблиц где запись Property объекта самая новая, т.е.:
id Cod Name cod_1 Shifr Tm_rc
1 1 Объект1 1 333 03.10.2005:13.05.30
2 2 Объект2 2 444 04.10.2005:15.05.50

Буду признателен за посказку.
avc*
Отправлено: 04.10.2005, 17:39


Не зарегистрирован







Вариант (рабочий, но, возможно, не лучший — убегаю)
CODE

Select
 o.*
,p.*
From
 Object o
,Property p
,(Select cod, max(tm_rc) as tm_rc From Property Group by cod) m
Where 1 = 1
 and p.cod = m.cod
 and p.tm_rc = m.tm_rc
 and o.cod = m.cod


Вернуться в Работа с базами данных в C++Builder