Главная страница
    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.078 c
1-1083221961
Tex
2004-04-29 10:59
2004.05.16
Преобразование quoted string в control string


1-1082649393
NumLock
2004-04-22 19:56
2004.05.16
Непонятка с TThread V2.


1-1082829945
kvazar
2004-04-24 22:05
2004.05.16
открытие файла


9-1073339831
$iD
2004-01-06 00:57
2004.05.16
Пожалуйста, помогите с алгоритмами!!!!!!!!!!!!!!!


1-1083040974
Sirus
2004-04-27 08:42
2004.05.16
Ограничение объема текста в TMemo...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский