读书人

找层次关系,该怎么处理

发布时间: 2012-03-13 11:21:12 作者: rapoo

找层次关系
现数据库有表的结构如下: 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 就是呀?

读书人网 >SQL Server

热点推荐