首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

找层次关系,该怎么处理

2012-03-13 
找层次关系现数据库有表的结构如下: Mark 表示几层,一个*一层,两个*两层,以此类推,PId是Id的父Id,Porder

找层次关系
现数据库有表的结构如下: Mark 表示几层,一个*一层,两个*两层,以此类推,PId是Id的父Id,Porder 是同一个父节点的排列顺序,Id可能不连续。
----------------------------------------------------------------
Id PId Mark Porder Name
 
115*.*.*.*.*.*1 Name11
121*.*3 Name12  
132*.*.*1 Name13
181*.*2 Name18
1518*.*.*1Name15
31*.*1Name3
10*1 Name1
212*.*.*1Name2
413*.*.*1Name4
515*.*.*.*.*1Name5
615*.*.*.*.*2Name6
715*.*.*.*.*3Name7
815*.*.*.*.*4Name8
2015*.*.*.*.*5Name20
105*.*.*.*.*.*2Name10

现在需要得到下面的结果,就是要显示层次关系,例如:Id为3、18、12的父Id都为1,但Id为18的记录底下有子节点,所以先排Id为18的子节点,再排Id为12的记录, 请问Sql怎么写?

Id PId Mark Porder Name

10*1 Name1
31*.*1 Name3
181*.*2 Name18
1518*.*.*1Name15
515*.*.*.*.*1Name5
115*.*.*.*.*.*1Name11
105*.*.*.*.*.*2Name10
615*.*.*.*.*2Name6
715*.*.*.*.*3Name7
815*.*.*.*.*4Name8
2015*.*.*.*.*5Name20
121*.*3Name12
212*.*.*1Name2
132*.*.*1Name13
413*.*.*1Name4


[解决办法]
但Id为18的记录底下有子节点,所以先排Id为18的子节点?
ID为12的下面也有子节点呀?
2 12 *.*.* 1 Name2 就是呀?

热点排行