СОЕДИНЕНИЕ 3 таблиц и СУММА ORACLE - PullRequest
0 голосов
/ 08 января 2019

У меня есть 3 таблицы:

Product:
+----------------------------------------+
| ID_product | name_product |   Amount   |
+----------------------------------------+
|     0      |    Door      |    450     |
+----------------------------------------+
|     1      |    Fence     |    1500    |
+----------------------------------------+

Operation:
+----------------------------------------+
| ID_operation | name_operation |  cost  |
+----------------------------------------+
|      0       |     Repair     |   250  |
+----------------------------------------+
|      1       |     Build      |   320  |
+----------------------------------------+

Process:
+----------------------------------------+
|    ID_product   |    ID_operation      |
+----------------------------------------+
|       0         |          0           |
+----------------------------------------+
|       0         |          1           |
+----------------------------------------+
|       1         |          0           |
+----------------------------------------+
|       1         |          1           |
+----------------------------------------+

И нужно рассчитать сумму затрат для каждого продукта, как это:

    Result table:
   +-----------------------------------+
   |  name_product  |    TOTAL_COSTS   |
   +-----------------------------------+
   |      Door      |   570 (250+320)  |
   +-----------------------------------+
   |      Fence     |        570       |
   +-----------------------------------+

Но я понятия не имею, как. Я думаю, что мне нужно несколько JOINS, как показано ниже, но я не знаю, как обрабатывать сумму.

SELECT name_product, operation.cost
FROM product
JOIN process ON product.ID_product = process.ID_product
JOIN operation ON operation.ID_operation = process.ID_operation
ORDER BY product.ID_product;

Ответы [ 2 ]

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

Попробуйте ниже Query

SELECT P.NAME_PRODUCT,SUM(O.COST)COST
FROM PROCESS PR,PRODUCT P,OPERATION O
WHERE PR.ID_PRODUCT=P.ID_PRODUCT
AND PR.ID_OPERATION=O.ID_OPERATION
GROUP BY P.NAME_PRODUCT;
0 голосов
/ 08 января 2019

Вы почти у цели. Ваши JOIN в порядке, вам просто нужно добавить предложение GROUP BY с агрегатной функцией SUM.

SELECT product.name_product, SUM(operation.cost) total_costs
FROM product
JOIN process ON product.ID_product = process.ID_product
JOIN operation ON operation.ID_operation = process.ID_operation
GROUP BY product.ID_product, product.name_product
ORDER BY product.ID_product;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...