Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Выбрать значение по условию


Автор: Staruha 18.4.2006, 20:59
Код работает,но вытаскивает просто наименьшее значение
Код

ttp:=inttostr(izd.fieldbyname('kod_tp').Asinteger);

   t:='select * from TOLCHINA where razmer'+ ttp +'<=:rzm;';
  tolcht.Close;
  tolcht.SQL.Clear;
   tolcht.SQL.add(t);
   tolcht.ParamByName('rzm').Value:=izd.fieldbyname('maxrazm').asinteger;
tolcht.Open;
tl.KeyValue:=tolcht.fieldbyname('kod').AsInteger;

 А нужно вытащить значение меньше или равное образцу 

Автор: Savek 19.4.2006, 08:23
Код

t:='select Top 1 *  from TOLCHINA where razmer<=:rzm order by razmer Desc';


Получишь наибольшее значение поля, удовлетворяющее условию 

Автор: Tror 19.4.2006, 11:21
Savek, запрос в принципе правильный, но будет работать не во всех базах,
т.к спецификатор Тор есть не во всех реализациях SQL.

Staruha,  какую СУБД используешь? 

Автор: Staruha 19.4.2006, 19:56
Firebird. А насчет сортировки в обратном порядке -была такая мысль. 

Автор: Savek 20.4.2006, 11:33
Еще вариант:
Код

'select  *  from TOLCHINA where razmer=(select Max(razmer)  from TOLCHINA where razmer<=:rzm)'
 

Автор: Staruha 20.4.2006, 20:10
 smile .Второй вариант работает! Получила ,что нужно smile 

Savek  и Tror  огромное вам спасибо. Ваши знания мне очень пригодились. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)