Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизВопрос о истории значеий Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.031 c