Показать сообщение отдельно
  #6  
Старый 23.07.2012, 00:19
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от tadalex
Вариант учета регистрации начала действия тарифа и его окончания в таблицу я ввел изначально, но пока не соображу, так же это все же будет работать?

А в чем проблема?
Когда ты делаешь начисление, то тебе надо найти некоторый тариф на некоторую услугу. Допустим, нам известны: ID посвтащика услуги, ID услуги и дата. Тогда такой запрос вернет тебе нужный тариф:

Код:
SELECT Price 
FROM Prices
WHERE 
  SupplyerID = :SupplyerID AND
  ServiceID = :ServiceID AND
  StartDt <= :CurrentDt AND
  (EndDt >= :CurrentDt OR EndDt IS NULL)
ORDER BY 
  UpdateTS DESC
LIMIT 1

Если сервер не поддерживает LIMIT, то можно просто получить весь список и просто взять первую запись (если она есть).

ЗЫ. LIMIT есть в Oracle и Postgree. В MS SQL Server это TOP, укащываемый, если не ошибаюсь, сразу после слова SELECT.
Ответить с цитированием