あなたはSQL Server上で作業しているので、私は階層または親子関係は、CTE式内で構築されてい
/*
create table hierarchy_data
(
Row int,
ID varchar(2),
Name varchar(20),
Parent varchar(2)
)
insert into hierarchy_data select 1 ,'c1', 'John', 'p1'
insert into hierarchy_data select 2 ,'c2' ,'Dave' ,'p2'
insert into hierarchy_data select 3 ,'p1' ,'Lex' ,'p3'
*/
;with cte as (
select
row,
id,
name,
parent,
row_number() over (order by id) as groupno,
1 as level
from hierarchy_data
where parent not in (
select id from hierarchy_data
)
union all
select
h.row,
h.id,
h.name,
h.parent,
cte.groupno,
cte.level + 1
from cte
inner join hierarchy_data h
on cte.id = h.parent
)
select *
from cte
order by groupno, level
以下のコードを共有して、あなたはrecursive CTE SQL queryを使用するオプションがあります。 ORDER BY句を使用することにより、あなたは
を望むように出力が
ようである出力を並べ替えることができますあなたは本当に自分の子供_below_両親を表示しますか? –
謝罪忘れてしまいました、MS SQL Server – p0enkie
'p3'は定義されていません。どのように階層が深いかをどのように知っていますか? –