подзапрос использует разгруппированный столбец "psi.product_id" из внешнего запроса - PullRequest
0 голосов
/ 18 июня 2020

У меня следующая модель:

Model

Для каждого товара на складе я хотел бы знать общую заказанную сумму. В моей модели каждый продукт связан с одним или несколькими товарными запасами вместе с суммой. И каждая позиция заказа связана с продуктом, также с суммой.

Пример: продукт - «Коробка с винтами», и он связан с 50-кратным запасом товара «Винт». Клиент разместил заказ на 3x «Коробка с винтами». В результате получается 150 заказанных винтов.

Я построил следующий запрос:

SELECT
  stock_item.id,
  (
    SELECT
      SUM("amount"),
      (
        SELECT SUM("amount")
        FROM order_item AS item
        WHERE item.product_id = psi.product_id
      ) AS "item_amount"
    FROM product_productstockitem AS psi
    WHERE psi.stock_item_id = stock_item.id
  ) AS "product_amount"
FROM stock_stockitem AS stock_item
;

PostgreSQL говорит мне следующее:

ERROR:  subquery uses ungrouped column "psi.product_id" from outer query
LINE 10:         WHERE item.product_id = psi.product_id

Как можно ли этого достичь?

1 Ответ

1 голос
/ 18 июня 2020

Я думаю вы хотите объединить таблицы и агрегировать:

select s.id,
       sum(psi.amount * oi.amount)
from stock_stockitem s left join
     product_productstockitem psi
     on psi.stock_item_id = stock_item.id left join
     order_item oi
     on oi.product_id = psi.product_id
group by s.id
...