【发布时间】:2011-11-10 09:04:24
【问题描述】:
我有 3 张桌子,例如
缩进头:
IndentID StatusID
-------- ------
1 5
2 5
缩进细节:
IndentID ItemID ItemStatusID
-------- ------ ------------
1 22 4
1 23 4
2 11 4
2 12 3
2 13 3
点缩进:
POID IndentID ItemID ItemStatusID
-------- ------ ------ ------------
1 1 22 4
1 1 23 4
1 2 11 4
当 IndentDetail 表中的所有项目(基于 IndentID)ItemstatusID 变为 4 时,我想更新 IndentHeader 表 StatusID = 4,否则我想更新 IndentHeader StatusID = 3。在条件中我需要提供 POID。根据 POID,IndentHeader 和 IndentDetail 表都考虑相应的 Indent。我想要的结果应该是这样的:
缩进头:
IndentID StatusID
-------- ------
1 4
2 3
如何做到这一点?请帮帮我。
大家好,这是我的更新命令。但它会将 IndentHeader 中的 StatusID 都更新为 4。
UPDATE STR_IndentHeader
SET StatusID = IID
FROM
(SELECT
STR_IndentDetail.IndentID, MIN(ItemStatusID) AS 'IID'
FROM
STR_IndentDetail INNER JOIN PUR_POIndent PP
ON PP.IndentID = STR_IndentDetail.IndentID
AND PP.ItemID = STR_IndentDetail.ItemID
WHERE ItemStatusID = 4 AND PP.POID = 1
GROUP BY STR_IndentDetail.IndentID) ID
WHERE ID.IndentID = STR_IndentHeader.IndentID
我需要你所有的宝贵贡献。请帮帮我...
【问题讨论】:
-
你知道 UPDATE 命令吗?如果是这样,您至少应该尝试一下并向我们展示您的尝试。
-
@Andrew:我发布了我的更新查询。请看一下。
-
当你说“这里我只想传递 POID,所以剩下的应该按照表格关系发生在上面”时,你的实际意思是什么?这没有意义。
-
@Hugh:在这种情况下,我需要提供 POID。因此,根据 POIndent 表中 POID 对应的 IndentID,应该执行更新查询。
标签: sql sql-server sql-server-2005 join sql-update