繁体   English   中英

SQL Server查询基于父记录的更新子节点

[英]SQL Server query update child node based on parent records

我正在尝试在SQL Server表“ tableA”中使用以下结构查询数据,该表的列为“节点”(varchar)和“目标”(位)。 节点列中的数据基于父/子关系。 行子节点:1001111001将所有这些行/节点作为父节点(100111100、10011110、1001111、100111、10011、1001、100、10、1)。 我想在sql server上的存储过程中完成以下操作

1-检索子节点的所有父节点。

2-如果所有父目标都等于0,则更新子行的目标

尝试这个:::

CREATE PROCEDURE UP_PROCEURENAME
@tablename varchar(30)
AS
BEGIN
 DECLARE @cnt INT = 1
 WHILE @cnt < len(destination)
 (select left(destination, len(destination)-@cnt) AS Parents from @tablename
 set @cnt = @cnt + 1)
 END LOOP
 GO
 IF(LEFT(destination,LEN(destination)-1) = 0)
   UPDATE @tablename
   SET destination =   ------YOUR UPDATE STATEMENT
END

EXEC UP_PROCEURENAME TableA
SELECT ones.n + 10*tens.n + 100*hundreds.n + 1 AS Num,
    Left(@S, ones.n + 10*tens.n + 100*hundreds.n + 1) as ParentNode,
    t.Destination as ParentDestination
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
         (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
         (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
         tableA t 
WHERE ones.n + 10*tens.n + 100*hundreds.n BETWEEN 0 AND Len(@s)-2 AND t.Node = Left(@S, ones.n + 10*tens.n + 100*hundreds.n + 1)
ORDER BY ones.n + 10*tens.n + 100*hundreds.n

至于更新,您现在可以检查所有父目标的总和是否为0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM