日期:2014-05-19  浏览次数:20507 次

父子类排序
表A,有四个字段,父类ParentID,子类ChildID,所处级别Level,大分类SortID
ChildID       ParentID       Level       SortID  
A                     A                       1                 类型一    
B                     B                       1                 类型一
C                     C                       1                 类型二
D                     D                       1                 类型一
AA                   A                       2                 类型一
AAA                 AA                     3                 类型一
DD                   D                       2                 类型一

要求排序之后成为
A                     A                       1                 类型一
AA                   A                       2                 类型一
AAA                 AA                     3                 类型一
B                     B                       1                 类型一
D                     D                       1                 类型一
DD                   DD                     2                 类型一
C                     C                       1                 类型二
即要求先按SortID分类,之后根据父子关系排序,Level是层次关系,如果父子关系Level相差值为1,我想在SQL里面实现,调试很久多没办法实现,请各位高手帮忙给点意见,我之前是多增加一个编号,然后在程序里面实现的,感觉那个很容易出现问题,而且计算比较繁琐



------解决方案--------------------
可行的方法有很多种,基于你目前的表结构,如果层次深度不超过三级,用左连接应该可以处理。
------解决方案--------------------
declare @t table(ChildID varchar(10),ParentID varchar(10),Level int,SortID