Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вычисляемое поле и дополнительный SELECT / 17 сообщений из 17, страница 1 из 1
25.10.2017, 15:04
    #39541819
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле и дополнительный SELECT
Тут больше нудна идея, правильная реализация, так сказать.

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

Цена в валюте вычисляется так:
Код: 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
25.10.2017, 15:06
    #39541822
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле и дополнительный SELECT
а процедура тут зачем?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.10.2017, 15:31
    #39541843
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле и дополнительный SELECT
X11...
А как бы сделать правильно и без этого дополнительного SELECT?
Или оставить всё как есть?
Ну, можно командно-административно задать, что сегодня доллара к гривне относится как 8:1 и не лазить каждый раз за курсом в базу. Считал один раз при старте клиента. А в полночь перезагрузить клиента.
И да, процедура тут нафига?
...
Рейтинг: 0 / 0
25.10.2017, 15:37
    #39541850
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле и дополнительный SELECT
недолюбливаю вычисляемые поля, или пишу все джойны в запросе или накладываю вьюху.
одним джойном больше, одним меньше, когда их десяток в запросе как-то уже пох.
...
Рейтинг: 0 / 0
25.10.2017, 15:46
    #39541860
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле и дополнительный SELECT
А как без процедуры?
...
Рейтинг: 0 / 0
25.10.2017, 15:47
    #39541862
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле и дополнительный SELECT
чччДНу, можно командно-административно задать

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

Не будет.

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

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


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