如何解决Oracle SQL:需要帮助,基于子表中的值之和更新记录
|| 假设我有一组符合以下情况的表: 板条箱有箱子 箱子有桶 值区包含一个称为Pieces的数值 一个箱子里有一个叫做TotalPieces的数值,它是其中所有盒子中所有桶中所有碎片的总和。 因此,我有以下表格称为CRATES,BOXES,BUCKETS。我需要一个更新语句,该语句将填充板条表中所有板条的TotalPieces列(在下面的SQL中未显示),作为所有存储段的总和。是的,我必须出于某种特定原因这样做,以防万一有人决定都像是这样,“好吧,为什么这样做而不是仅仅运行一条选择语句?\”我可以执行选择语句,然后它看起来像这样:SELECT CR.ID,SUM(BU.PIECES) FROM CRATES CR
JOIN BOXES BO ON BO.CRATE_ID = CR.ID
JOIN BUCKETS BU ON POPR.BO_ID = BO.ID
GROUP BY CR.ID;
如何将所有存储桶的总件数放入板条箱表的“件数”列中?
解决方法
这可以解决问题:
update crates cr set cr.total_pieces =
(
select sum(bu.pieces) pieces from crates cr
join boxes bo on bo.crate_id = cr.id
join buckets bu on bu.box_id = box.id
where crate.id = cr.id
group by crate.id
);
,尝试这个:
SELECT BO.CRATE_ID AS CRATEID,SUM(BUCKETSUM) AS CRATESUM
FROM BOXES BO INNER JOIN
(SELECT BU.BO_ID AS BOXID,SUM(BU.PIECES) as BUCKETSUM
FROM BUCKETS BU GROUP BY BU.BO_ID) BU
ON BU.BOXID = BO.ID
GROUP BY BO.CRATE_ID
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。