powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выбор значения из поля совпадающего по дате с другой таблицей
6 сообщений из 6, страница 1 из 1
Выбор значения из поля совпадающего по дате с другой таблицей
    #40024859
gbcbr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть задача посчитать цену по курсу на дату оплаты, который записан в таблицу test.rate
Код: plsql
1.
2.
3.
4.
5.
CREATE TABLE test.rate
(
    date date NOT NULL,
    rate numeric(10,4) NOT NULL,
)


Цена и дата вносятся в таблицу test.purchase
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE test.purchase
(
    prod_id text COLLATE pg_catalog."default",
    import_id text COLLATE pg_catalog."default",
    exw_price_usd numeric(10,2),
    exw_price_eur numeric(10,2),
    import_exp numeric(10,2),
    stock_price numeric(10,2),
    qty numeric(10,0),
    date date NOT NULL
)


Написал триггерную функцию в pgAdmin
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
BEGIN
SELECT rate
    FROM test.rate
    INNER JOIN test.purchase
	ON purchase.date=rate.date;	
UPDATE test.purchase
SET purchase.exw_price_eur=purchase.exw_price_usd/rate.rate;
RETURN NEW.exw_price_eur;
END;


и триггер
Код: plsql
1.
2.
3.
4.
5.
CREATE TRIGGER t_conv
    AFTER INSERT OR UPDATE OF exw_price_usd, date
    ON test.purchase
    FOR EACH ROW
    EXECUTE PROCEDURE test.f_conv();


выполняю запрос:
Код: plsql
1.
2.
3.
INSERT INTO test.purchase(
	exw_price_usd, date)
	VALUES (42, '10-10-2020');


Получаю ошибку:
ERROR: query has no destination for result data
ответов на подобную ситуацию не нашел (
Подскажите, кто сталкивался
...
Рейтинг: 0 / 0
Выбор значения из поля совпадающего по дате с другой таблицей
    #40024879
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gbcbr
SELECT rate
FROM test.rate
INNER JOIN test.purchase
ON purchase.date=rate.date

select есть. А куда его результат пихать?
...
Рейтинг: 0 / 0
Выбор значения из поля совпадающего по дате с другой таблицей
    #40024895
gbcbr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij, ну так по логике, это значение выбирается именно для использования в следующем за селектом апдейте таблицы с вычислением цены товара в евро... собственно это и есть основная идея этого триггера... если оно не передается в UPDATE внутри этой конструкции, с удовольствием выслушаю альтернативную версию реализации этой задачи )
Задача:
при вводе значения цены продукта в долларах, автоматом пересчитывать ее в евро по курсу оплаты в этот день, который зафиксирован в колонке rate.
...
Рейтинг: 0 / 0
Выбор значения из поля совпадающего по дате с другой таблицей
    #40024959
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gbcbr,

нет такой логики, откуда вы такое выдумали?
...
Рейтинг: 0 / 0
Выбор значения из поля совпадающего по дате с другой таблицей
    #40025002
grgdvo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gbcbr,
а что вы возвращаете из триггерной функции??
gbcbr
Код: sql
1.
RETURN NEW.exw_price_eur;


Получаю ошибку:
ERROR: query has no destination for result data
ответов на подобную ситуацию не нашел (
Надо либо NULL, либо NEW, либо OLD, либо значение типа record/row.

A trigger function must return either NULL or a record/row value having exactly the structure of the table the trigger was fired for.
...
Рейтинг: 0 / 0
Выбор значения из поля совпадающего по дате с другой таблицей
    #40027783
gbcbr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильное решение

Код: plsql
1.
2.
3.
4.
5.
6.
7.
BEGIN
UPDATE test.purchase pr
SET exw_price_eur = exw_price_usd/e.rate
FROM test.eurusd  e
WHERE e.date=pr.date;
RETURN NEW.exw_price_eur;
END
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выбор значения из поля совпадающего по дате с другой таблицей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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