将顶级父级添加到现有SQL查询
我的SQL语句有问题。我想将每个对象的顶部父对象添加到每一行。我尝试了一些方法,但我不得不说我基本上是一个SQL初学者 例如:将顶级父级添加到现有SQL查询,sql,sql-server,recursion,Sql,Sql Server,Recursion,我的SQL语句有问题。我想将每个对象的顶部父对象添加到每一行。我尝试了一些方法,但我不得不说我基本上是一个SQL初学者 例如: Object A: ID 2, ParentID NULL Object B: ID 10, ParentID 2 Object C: ID 25, ParentID 10 Object D: ID 51, ParentID 25 现在的结果应该是: Object D: ID 51, ParentID 25, TopParent 2 以下是我目前的疑问: With
Object A: ID 2, ParentID NULL
Object B: ID 10, ParentID 2
Object C: ID 25, ParentID 10
Object D: ID 51, ParentID 25
现在的结果应该是:
Object D: ID 51, ParentID 25, TopParent 2
以下是我目前的疑问:
With
Geraetetypen(TypID, Typname, ParentID, Ebene) As (Select parentTyp.ID,
parentTyp.geraeteTyp,
IsNull(parentTyp.parentID, 0) parentID,
1 As Ebene
From test_table_GeraeteTyp As parentTyp
Where parentTyp.parentID = 0
Union All
Select childTyp.ID,
childTyp.geraeteTyp,
childTyp.parentID,
gt.Ebene + 1 As Ebene
From test_table_GeraeteTyp As childTyp
Inner Join Geraetetypen As gt On childTyp.parentID = gt.TypID)
Select *
From
Geraetetypen
现在我得到了ID、名称、ParentID和级别
谢谢 将其添加到顶部查询,然后在递归中回显:
With
Geraetetypen(TypID, Typname, ParentID, Ebene, TopParent) As (Select parentTyp.ID,
parentTyp.geraeteTyp,
IsNull(parentTyp.parentID, 0) parentID,
1 As Ebene,
parentTyp.ID TopParent
From test_table_GeraeteTyp As parentTyp
Where parentTyp.parentID = 0
Union All
Select childTyp.ID,
childTyp.geraeteTyp,
childTyp.parentID,
gt.Ebene + 1 As Ebene,
gt.TopParent
From test_table_GeraeteTyp As childTyp
Inner Join Geraetetypen As gt On childTyp.parentID = gt.TypID)
Select *
From
Geraetetypen