SQL Query for Parent Child Relationship

后端 未结 4 600
一个人的身影
一个人的身影 2020-12-04 22:54

I have db table with parent child relationship as:

NodeId    NodeName    ParentId
------------------------------
1         Node1       0
2         Node2              


        
相关标签:
4条回答
  • 2020-12-04 23:08

    And just to make sure it works if its a parent of itself (otherwise it will recurse until it breaks):

       with [CTE] as (
            select * from [TheTable] c where c.[ParentId] = 1
            union all
            select * from [CTE] p, [TheTable] c where c.[ParentId] = p.[NodeId]
            and c.[ParentId] <> c.[NodeId]
        )
        select * from [CTE]
    
    0 讨论(0)
  • 2020-12-04 23:14
     WITH Temp_Menu AS
     ( 
      SELECT AM.* from FCB_AccessMenu AM where AM.[ParentId] = 6   
    
               UNION ALL     
    
            SELECT AM.* FROM  FCB_AccessMenu AM ,Temp_Menu TM  WHERE AM.[ParentID]=TM.[MenuID]        
    
      )   
    
      SELECT * FROM Temp_Menu ORDER BY ParentID
    
    0 讨论(0)
  • 2020-12-04 23:19

    You should look into using the Nested Set Model for parent-child relationships within an SQL database. It's much nicer than trying to store the parentID of records in the table like this, and makes queries like this much easier.

    0 讨论(0)
  • 2020-12-04 23:34
    with [CTE] as (
        select * from [TheTable] c where c.[ParentId] = 1
        union all
        select * from [CTE] p, [TheTable] c where c.[ParentId] = p.[NodeId]
    )
    select * from [CTE]
    
    0 讨论(0)
提交回复
热议问题