Da Sie auf SQL Server arbeiten, haben Sie die Möglichkeit, mit recursive CTE SQL query als ich die Codes unter
/*
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
Hierarchie oder Eltern-Kind-Beziehung geteilt innerhalb des CTE Ausdruck gebaut wird. Durch die ORDER BY-Klausel verwenden Sie die Ausgabe sortiert werden können, wie Sie
Der Ausgang als
ist wünschen
Haben Sie wirklich Eltern _below_ ihre Kinder angezeigt werden soll? –
Entschuldigung, ich habe vergessen zu sagen, MS SQL Server – p0enkie
Es gibt keine 'p3' definiert; Woher wissen wir, wie tief die Hierarchie sein kann? –