我有一些怪物更新查询,如果不执行服务器端循环或任何操作,我无法完全适应一个查询。
我想使用其他两个表中的值更新一个主帐户表。主账户有 4 列,accountID、areaID、stockID 和 amount。前三列是主键。
我要更新详细信息的两张表几乎相同,一张是传入订单,一张是传出订单。它们都包含列 orderID、stockID 和 amount。主键是 orderID 和 stockID。
还有另一个表 orders,其中包含需要引用以更新主帐户表的订单的 areaID 和 accountID。到目前为止,我可以获得一个获取我想要的详细信息的选择函数,我只是不知道如何将它转移到更新语句。
SELECT a.*,o.orderID, SUM(io.amount) as in,SUM(oo.amount) as out
FROM account_stock AS a
INNER JOIN orders AS o ON o.accountID = a.accountID AND o.areaID = a.areaID
LEFT JOIN incoming_orders AS io ON io.stockID = a.stockID AND io.orderID = o.orderID
LEFT JOIN outgoing_orders AS oo ON oo.stockID = a.stockID AND oo.orderID = o.orderID
GROUP BY a.stockID,a.accountID,a.areaID
如果可以运行一个单独的更新查询,该查询将使用传入和传出库存的总和更新 account_stock 文件,我完全迷失了。
任何有关表结构更改等的建议都将受到欢迎,因为我知道我的 SQL 不是太传统。