【发布时间】:2018-01-15 14:32:27
【问题描述】:
我有一个项目表,其中包含多级层次结构的所有记录。所以,有一个顶级项目,它下面有项目,下面有项目,依此类推;此外,此表中还会有许多顶级项目。
我的目标是从这个表中返回记录,这样每个父母后面跟着它的孩子的记录(这些孩子可以按任何顺序排列),然后每个孩子后面跟着它的孩子(这些孩子可以在任何订单)就在它之后,依此类推。我为此创建了一个 SQLFiddle:SQLFiddle for this
我已尝试使用以下查询获取此信息,但第三级层次结构项并未出现在其父项之后。
select Id, ParentId, ChildLevel,
CASE WHEN ChildLevel = 0 THEN Id
WHEN ChildLevel = 1 then Id
WHEN ChildLevel > 1 THEN ParentId END Num
from Items order by UltimateParentId, ChildLevel, Num ;
问题
有没有办法让孩子出现在上面的 sql fiddle 中的父级之后?
使用数据创建此表的脚本如下。
create table Items ( Id int , ParentId int , ChildLevel int, UltimateParentId int);
--I could have multiple hierarchy level for each top level item
--right now I am populating data at multiple levels for only one top level item
--but the table will consist of many top level items having their own hierarchy records
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (1,0,0,0);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (2,1,1,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (3,1,1,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (4,1,1,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (5,3,2,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (7,2,2,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (6,3,2,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (8,4,2,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (9,3,2,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (10,2,2,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (11,4,2,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (12,11,3,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (13,5,3,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (14,11,3,1);
insert into Items (Id, ParentId, ChildLevel, UltimateParentId) values (15,5,3,1);
【问题讨论】:
标签: sql sql-server-2008 hierarchical-data