powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вычисляемое поле и дополнительный SELECT
17 сообщений из 17, страница 1 из 1
Вычисляемое поле и дополнительный SELECT
    #39541819
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут больше нудна идея, правильная реализация, так сказать.

Если поля "Цена", "Валюта" и вычисляемое поле "Цена в валюте".

Цена в валюте вычисляется так:
Код: sql
1.
(SELECT RES FROM GET_PRICE_CURRENCY(ID_CURRENCY, PRICE))




сама процедура
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create or alter procedure GET_PRICE_CURRENCY (
    ID_CURRENCY INTEG,
    PRICE type of column APART.PRICE)
returns (
    RES type of column APART.PRICE)
as
declare variable RATE FLOAT2;
BEGIN
  SELECT COURSE FROM TCURRENCY WHERE ID = :ID_CURRENCY INTO :RATE;
  RES = :PRICE / :RATE;
  SUSPEND;
END



Меня смущает, что каждый раз выполняется
Код: sql
1.
 SELECT COURSE FROM TCURRENCY WHERE ID = :ID_CURRENCY INTO :RATE;



А как бы сделать правильно и без этого дополнительного SELECT?
Или оставить всё как есть?
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541822
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а процедура тут зачем?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541843
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11...
А как бы сделать правильно и без этого дополнительного SELECT?
Или оставить всё как есть?
Ну, можно командно-административно задать, что сегодня доллара к гривне относится как 8:1 и не лазить каждый раз за курсом в базу. Считал один раз при старте клиента. А в полночь перезагрузить клиента.
И да, процедура тут нафига?
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541850
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
недолюбливаю вычисляемые поля, или пишу все джойны в запросе или накладываю вьюху.
одним джойном больше, одним меньше, когда их десяток в запросе как-то уже пох.
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541860
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как без процедуры?
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541862
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДНу, можно командно-административно задать

Не годится.
Курс валюты хранится в базе, там несколько валют.
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541871
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11А как без процедуры?
Просто запрос:
Код: sql
1.
2.
3.
select :PRICE / COURSE RES
from TCURRENCY
where ID = :ID_CURRENCY
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541874
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что такое "COURSE RES" и где оно живёт?
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541875
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ааа, в TCURRENCY
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541876
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541883
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если записывать курс в глобальную переменную и в вычисляемом поле брать значение из глабальной переменной, а не из таблицы? Не будет быстрее?
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541894
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11А если записывать курс в глобальную переменную и в вычисляемом поле брать значение из глабальной переменной, а не из таблицы? Не будет быстрее?

Не будет.

Можешь грузить "курсы валют и процентные ставки" в память локального приложения и в дальнейшем пользоваться без обращения к серверу.
И подписываться на событие "кто-то что-то поменял в табличке констант". Получил событие - перечитал курсы.
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541946
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11А как бы сделать правильно и без этого дополнительного SELECT?
Курс должен храниться в таблице с датой/временем для историчности. А то нужно будет вчерашний документ распечатать, а ты получишь его со свежим курсом.
И можно сделать select from select и рассчитывать текущую стоимость в верхнем запросе. Тогда курс в нижнем запросится один раз.
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541949
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanX11А как бы сделать правильно и без этого дополнительного SELECT?
Курс должен храниться в таблице с датой/временем для историчности. А то нужно будет вчерашний документ распечатать, а ты получишь его со свежим курсом.
...

Можно "вчерашний документ" формировать методом тупого копирования актуальных данных (текущий курс валюты, текущее название товара и т.п.) из справочников в создаваемый документ.
Денормализация, да, но в простых случаях здорово облегчает жизнь.
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541952
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДДенормализация, да, но в простых случаях здорово облегчает жизнь.
Еще проще сделать запрос курса. :-) А главное, к этому нередко приходят, в итоге: подставляется реальный, а потом запрашивается у пользователя.
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541959
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanзапрос
В смысле у пользователя спросить.
...
Рейтинг: 0 / 0
Вычисляемое поле и дополнительный SELECT
    #39541978
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, спасибо.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вычисляемое поле и дополнительный SELECT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]