Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Вопрос о истории значеий   Найти похожие ветки 

 
avgur   (2004-04-21 14:34) [0]

Помогите новичку... Как сделать чтобы значения прирасчете брались на конкретную дату или дату большей укзанной в справочнике.
Смысл в чем: необходимо организовать историю значений как в 1С. Чтобы с 1 по 14 бралось значение одно с 15 по 17 бралось значение другое, а начиная с 18 и далее значение 3.
метобом перебора значений через if очень долго. Может кто подскажет???


 
Fay ©   (2004-04-21 14:35) [1]

только перебором. чудес не бывает


 
Курдль ©   (2004-04-21 14:54) [2]


> метобом перебора значений через if очень долго. Может кто
> подскажет

Много всяких алгоритмов.
Напр. методом последовательного приближения :)
А ващщета, раз форум по базам - заставьте работать сервер одним запросом и не парьте себе мОзги, как оно у него там "перебором" или "подвыподвертом" выбирается...


 
avgur   (2004-04-21 15:08) [3]


> Курдль ©   (21.04.04 14:54) [2]
> 1. Напр. методом последовательного приближения :)
> 2. заставьте работать сервер одним запросом ???

Если можно и не трудно по подробней пожалуйста...
или где почитать плз...


 
Johnmen ©   (2004-04-21 15:16) [4]

>Если можно и не трудно по подробней пожалуйста...

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


 
Курдль ©   (2004-04-21 15:25) [5]


select PAY_SUMMA from SC_PAYMENTS
where PAY_DATE between (:BEG_DATE, :END_DATE)

А почитать - в книжках :( Или это не Ваш стиль?


 
Fay ©   (2004-04-21 15:36) [6]

Курдль ©   (21.04.04 15:25) [5]
Хрень какая-то... Нужна одна запись.


 
avgur   (2004-04-21 15:40) [7]

Цель:
Есть автомобиль у него тариф на использования допустим на 1 января 2004г. 22 грн./час, с 15 января 2004г. тариф поменялся на 21,75 грн/час, а с 19 января 2004г. 23 грн.

Автомобиль эксплуатировался месяц
1.01.04 12 часов 45 минут * тариф 22 грн. получаем ...
2.01.04 12 часов 45 минут * тариф 22 грн. получаем ...
3.01.04 ...
15.01.04 7 часов 10 минут * тариф 21,75 = ...
...
19.01.04 2 часа 05 минут * тариф 23 грн. = ...
и т.д.

справочник тарифов:
TID       : Autoincremetn;
DataTarif : Data;
GosNum    : String;
Tariff    : Float;


 
Johnmen ©   (2004-04-21 15:44) [8]

Какой тариф задействуется, если за заданный период было более нуля обновлений тарифа ?


 
avgur   (2004-04-21 15:48) [9]


> Курдль ©   (21.04.04 15:25) [5]
>
> select PAY_SUMMA from SC_PAYMENTS
> where PAY_DATE between (:BEG_DATE, :END_DATE)


это я и сам получил только вот когда бегаешь по записям через if для сравнения дат много времени уходит, а записей много. Вот я у Вас и спрашиваю господа присяжные заседатели как можно форсировать этот процесс, ведь 1с-ники как то додумались. У них это быстро работает. (относительно)


 
avgur   (2004-04-21 15:52) [10]


> Johnmen ©   (21.04.04 15:44) [8]
> Какой тариф задействуется, если за заданный период было
> более нуля обновлений тарифа ?


не понял вопоса...


 
desha ©   (2004-04-21 15:53) [11]

select tarif
from table
where DataTarif <= :Date
order by dataTarif descending

Первая запись- твоя.


 
Курдль ©   (2004-04-21 15:54) [12]


> Fay ©   (21.04.04 15:36) [6]
> Хрень какая-то... Нужна одна запись.

Мой досужий пример - не хрень какая-то, а просто пример "ни о чем". Как, впрочем, и условие автора.
Или вы в нем "усмотрели нить" - какую дату из какой таблицы брать и по каким точным правилам?


 
LordOfSilence ©   (2004-04-21 16:26) [13]

Что вроде подобного не подойдет?

select ДатаПоездки, (select top 1 ЗначениеТарифа from ТаблицаТарифов where ДатаПоездки>=ДатаТарифа order by ДатаТарифа desc) as СуммаТарифа from ТаблицаПоездок


 
LordOfSilence ©   (2004-04-21 16:27) [14]

Ах, блин, не заметил, что это LocalSQL...


 
avgur   (2004-04-21 16:35) [15]

вот-вот, для локал скюэл топ не работает к сожалению, а на сколько это облегчило бы задачу в разных случаях


 
Johnmen ©   (2004-04-21 17:04) [16]

SELECT *
FROM Table
WHERE DataTarif=(SELECT MAX(DataTarif)
                FROM Table
                WHERE DataTarif <= [интересующая дата])


 
dim- ©   (2004-04-21 17:10) [17]

а зачем изобретать велосипед если 1С это уже придумала, делай в ней


 
LordOfSilence ©   (2004-04-21 17:16) [18]

Извини, синтаксис LocalSQL ни бельмеса не помню...

select ДатаПоездки, ЗначениеТарифа
from _ТаблицаПоездок, _ТаблицаТарифов
where _ТаблицаТарифов.ДатаТарифа=(select Max(ДатаТарифа) from _ТаблицаТарифов where ДатаПоездки>=ДатаТарифа)


Хозяин, а может быть этот колор? (с)



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.023 c
3-1082142426
Kein
2004-04-16 23:07
2004.05.16
Помогите разобраться с InterBase ом


1-1083298689
Kliiip
2004-04-30 08:18
2004.05.16
Как сохранить параметры формы и компонентов в нем?


1-1083038435
RH
2004-04-27 08:00
2004.05.16
Создать каталог


1-1083620679
spogi
2004-05-04 01:44
2004.05.16
TLCDNumber


1-1083251300
Smog
2004-04-29 19:08
2004.05.16
Разделение строки на подстроки