SQL - оптимальный запрос

bopmy
Дата: 28.10.2005 21:02:47
Нужно получить одно значение для даты меньше или равной заданной из множества значений. На ум пришол только такой запрос
select e.cost_new
               from newcost e
               where e.kod_ist=:kod_t
                     and e.data_opr=(select max(d.data_opr)
                                     from newcost d
                                     where d.data_opr<=:data_begbalans||' 23:59'
                                        and d.kod_ist=:kod_t))
может есть более оптимальны вариант.
FireBird 1.5
Заранее благодарен.
Гаджимурадов Рустам
Дата: 28.10.2005 21:11:18
Не понял вопроса - а что делать со случаем, когда будет возвращать более одной даты меньшей заданной?
Почему по max отсекаешь?
Приведи данные и объясни чем тебе твой запрос не нравится (его кстати можно без подзапроса делать).
bopmy
Дата: 28.10.2005 21:24:01
1-нужно получить только одно значение (не множество) для даты меньше или равной заданной поэтому и применяю max получая одно значение в подзапросе и по нему вытаскиваю последнее на данный день значение costnew
2-Мне мой нравится но может есть еще проще без подзапроса.

И еще вопросик в эту тему
надо из нескольких значений таблици в которых
код (не меняется),цена (может измен.),дата(меняется)
получить неповторяющиеся значения в сл.порядке
код , цена (единственная из нескольких одинаков.),дата(первая для данной цены).
Спортлото
Дата: 29.10.2005 21:07:41
bopmy
1-нужно получить только одно значение
select first 1 cost_new from newcost
where kod_ist=... and data_opr<=... order by data_opr desc
bopmy
надо ... получить неповторяющиеся значения в сл.порядке код , цена (единственная из нескольких одинаков.),дата(первая для данной цены).
select kod, cena, min(data) from ...
Лентяй
Дата: 31.10.2005 11:00:30
Вот так я добываю курсы валют на дату:
select r.idval, max(r.dat), max(v.nmval),
       (select Rate from rates where idval = r.idval and dat = max(r.dat)) as rate
from rates r
inner join val v on r.idval = v.idval
where r.dat <= :dat
group by r.idval
bopmy
Дата: 01.11.2005 09:53:57
Спасибо за ответы - помогли