Главная страница
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.022 c
1-1083140558
GIL
2004-04-28 12:22
2004.05.16
MDI-окна исчезновение управляющих кнопок при развертывании


14-1082743049
Ske4er
2004-04-23 21:57
2004.05.16
О Законах РФ


3-1082077335
rosl
2004-04-16 05:02
2004.05.16
запрос SQL


1-1082980938
Дас Виндовс 45
2004-04-26 16:02
2004.05.16
Как определить язык, используемый по умолчанию?


1-1083017788
sensor
2004-04-27 02:16
2004.05.16
Проблема с PopupMenu.items.Delete