postgresql - 我想更新通过 SELECT 语句返回的表的结果
问题描述
我需要根据计算更新表 (tb_order_line) 和列 (total_vat_sum),其中包含来自同一个表的 2 个值(数量和单位价格)和来自另一个表的第三个值(c.vat)。这是我使用 SELECT 语句尝试的查询,问题是它使用相同的计算总量更新所有行,而不是按应有的方式更新每一行的计算。谢谢你的帮助!
`UPDATE ventas.tb_order_line
SET total_vat_sum =
(SELECT SUM(ol.quantity * ol.unit_price * (1+c.vat))
FROM ventas.tb_order_line AS ol
JOIN ventas.tb_product AS p
ON ol.product_code = p.product_code
JOIN ventas.tb_subcategory AS s
ON p.subcategory_code = s.subcategory_code
JOIN ventas.tb_category AS c
ON c.category_code = s.category_code
);`
tb_product
tb_order_line
解决方案
FROM ventas.tb_order_line AS ol
对于每个更新的行,从该表中选择每一行。相反,您需要对更新的行进行联接:
UPDATE ventas.tb_order_line ol
-- ^^
SET total_vat_sum = (
SELECT SUM(ol.quantity * ol.unit_price * (1+c.vat))
FROM ventas.tb_category AS c
JOIN ventas.tb_subcategory AS s ON ON c.category_code = s.category_code
JOIN ventas.tb_product AS p ON s.subcategory_code = p.subcategory_code
WHERE p.product_code = ol.product_code
);
推荐阅读
- javascript - chrome上奇怪的本地存储项目
- c# - 如何将 c++ 可执行文件 p/Invoke 到 C#
- c# - 行数到标签并将标签数加 1
- javascript - 如果登录应用程序,如何重定向
- django - SerializerMethodField 始终返回相同的值并排除字段
- rust - 从对特征关联类型的引用中读取值时,如何解决“借用内容”错误?
- c# - 在不继承单一行为的情况下实例化预制件
- apache - 这个 Apache 环境变量语法是如何工作的?
- visual-studio - 无法使用 Visual Studion 2015 在 utasker 上运行 STM32Fxx 板
- javascript - 用时刻 JS 格式化日期以匹配