Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.035 c
1-1083311730
Ш-К
2004-04-30 11:55
2004.05.16
FreeAndNil


3-1082402955
mur
2004-04-19 23:29
2004.05.16
# вместо русских букв в таблице в Database Desktop


7-1081509708
Zheks
2004-04-09 15:21
2004.05.16
Как без лишних вопросов выключить комп под WinXP?


6-1080487828
iu2320
2004-03-28 19:30
2004.05.16
Shared resources


6-1080307767
Intf
2004-03-26 16:29
2004.05.16
Сокеты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский