sql >> データベース >  >> RDS >> Sqlserver

親要素の再帰的連結

    再帰 CTE を使用できます .

    declare @T table(ID int, Name char(1), Parent int);
    
    insert into @T values  
    (1      ,'A'       ,NULL),
    (2      ,'B'       ,NULL),
    (3      ,'C'       ,1),
    (4      ,'D'       ,1),
    (5      ,'E'       ,3),
    (6      ,'F'       ,5);
    
    with C as
    (
      select ID,
             Name,
             Parent,
             cast('' as varchar(max)) as ParentNames
      from @T
      where parent is null
      union all
      select T.ID,
             T.Name,
             T.Parent,
             C.ParentNames + ' > ' + C.Name
      from @T as T         
        inner join C
          on C.ID = T.Parent
    )      
    select ID,
           Name,
           stuff(ParentNames, 1, 3, '') as ParentNames
    from C;     
    


    1. MySQL多対多選択

    2. 複数の言語からデータを読み取るときにジャンク/ガベージ文字を回避するにはどうすればよいですか?

    3. T-SQL SET演算子パート2:INTERSECTおよびEXCEPT

    4. SQLServerのHibernate構成ファイルを構成する方法