Кто сталиквался, может быть подскажите?
Есть условно две таблицы: таблица1 (table1) и таблица2 (table2)
Таблица 2 связана с таблицей 1 так ((table1.nrec==table2.ctable1))
В таблице 2 есть скажем поле типа дата table2.dateR.
Нужно вывести скажем так:
select table1.nrec, table2.nrec, table2.dateR
Но нужно вывести последнюю по дате запись из таблицы 2, т.е. типа get last table2 при сортировке order by table2.dateR
Вот если в vip - е делать тут вопросов нет, все просто, но как сделать одним запросом, не пойму.
Если делать так
select table1.nrec, table2.nrec, table2.dateR
where ((table1.nrec==table2.ctable1)) order by table2.dateR
то выводит все записи из второй таблицы, а надо только последнюю по дате.
Запрос последней записи
Модераторы: m0p3e, edward_K, Модераторы
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Запрос последней записи
ну либо DSQL
либо так
from ... table2 table3
where ((
and table1.nrec == table3.ctable1
and table2.atl_lastdate << table3.atl_lastdate(noindex)
and table2/atl_lasttime << table3.atl_lasttime(noindex)
)) and not isvalidall(tntable3);
если просто по дате могут быть проблемы - нужен еще проверить ключ при совпадении дат - хоть nrec.
либо так
from ... table2 table3
where ((
and table1.nrec == table3.ctable1
and table2.atl_lastdate << table3.atl_lastdate(noindex)
and table2/atl_lasttime << table3.atl_lasttime(noindex)
)) and not isvalidall(tntable3);
если просто по дате могут быть проблемы - нужен еще проверить ключ при совпадении дат - хоть nrec.
Re: Запрос последней записи
Код: Выделить всё
select table1.nrec, table2.nrec, table2.dateR
from table1, table2,
(select max(table1.nrec)(fieldname=maxnrec)
from table1, table2,
(select max(table2.dateR)(fieldname=maxdate)
from table1, table2
where
((
table1.nrec /== table2.ctable1
))
)
where
((
table1.nrec /== table2.ctable1 and (table2.dateR = maxdate)
))
)
where
((
table1.nrec /== table2.ctable1 and (table1.nrec = maxnrec)
));
Re: Запрос последней записи
К сожалению не подходит, версия атлантиса старая (RAJAH писал(а):Код: Выделить всё
select table1.nrec, table2.nrec, table2.dateR from table1, table2, (select max(table1.nrec)(fieldname=maxnrec) from table1, table2, (select max(table2.dateR)(fieldname=maxdate)
Re: Запрос последней записи
Чёт пока не осознал : (edward_K писал(а):ну либо DSQL
либо так
from ... table2 table3
where ((
and table1.nrec == table3.ctable1
and table2.atl_lastdate << table3.atl_lastdate(noindex)
and table2/atl_lasttime << table3.atl_lasttime(noindex)
)) and not isvalidall(tntable3);
если просто по дате могут быть проблемы - нужен еще проверить ключ при совпадении дат - хоть nrec.
Насчет дат, одинаковых дат быть не может, т.е. проверять ключ при совпадании дат нет необходимости.