Проблема с вычислениями в Oracle Apex? - PullRequest
0 голосов
/ 11 января 2019

У меня есть две таблицы: счет и продукт. В таблице product есть атрибуты price of product, а в таблице bill - атрибуты количество и общая цена. Поэтому мне нужно рассчитать общую стоимость атрибута, умножив цену атрибутов на товар и количество на счет. Кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 12 января 2019

Я почему-то сомневаюсь, что эти таблицы содержат только те столбцы, которые вы упомянули. Им обоим не хватает какого-то ID, что сделало бы возможным объединение. Иначе это просто не имело бы смысла.

Например (вместе с некоторыми примерами данных):

SQL> create table product (product_id number, price number);

Table created.

SQL> create table bill    (product_id number, quantity number, total_price number);

Table created.

SQL> insert all
  2    into product (product_id, price)    values (1, 100)
  3    into product (product_id, price)    values (2, 200)
  4    into bill    (product_id, quantity) values (1, 5)
  5  select * from dual;

3 rows created.

SQL> select * from product;

PRODUCT_ID      PRICE
---------- ----------
         1        100
         2        200

SQL> select * from bill;

PRODUCT_ID   QUANTITY TOTAL_PRICE
---------- ---------- -----------
         1          5

SQL> commit;

Commit complete.

Чтобы установить total_price значение столбца, вы можете использовать UPDATE

SQL> update bill b set
  2    b.total_price = (select b.quantity * p.price
  3                     from product p
  4                     where p.product_id = b.product_id
  5                    );

1 row updated.

SQL> select * From bill;

PRODUCT_ID   QUANTITY TOTAL_PRICE
---------- ---------- -----------
         1          5         500

SQL> rollback;

Rollback complete.

или MERGE:

SQL> merge into bill b
  2    using (select p.product_id, p.price
  3           from product p
  4          ) x
  5    on (b.product_id = x.product_id)
  6  when matched then update set b.total_price = b.quantity * x.price;

1 row merged.

SQL> select * From bill;

PRODUCT_ID   QUANTITY TOTAL_PRICE
---------- ---------- -----------
         1          5         500

Поскольку вы пометили вопрос тегом Apex, неясно, что у вас есть на самом деле. Что это за страница? Если это один из отчетов (классический или интерактивный), вы можете объединить таблицы в product_id как

SQL> select b.product_id, b.quantity, p.price, b.quantity * p.price as total_price
  2  from product p join bill b on b.product_id = p.product_id;

PRODUCT_ID   QUANTITY      PRICE TOTAL_PRICE
---------- ---------- ---------- -----------
         1          5        100         500

Если это страница формы, используйте динамическое действие, которое устанавливает значение при изменении P1_PRICE и / или P1_QUANTITY; Предположим, что это страница 1, тогда вы установите P1_TOTAL_PRICE на

:P1_PRICE * :P1_QUANTITY

В основном, довольно много вариантов. То, что вы будете использовать, зависит от того, что у вас есть на самом деле.

...