日期:2014-05-18  浏览次数:20686 次

一个存储树结构的表的呈现顺序问题,求SQL语句。
一个用来存储树结构的表:TreeInfo(id,Name,ParentID,Level,ViewOrder),其中ID为自增长主键,ParentID为父ID,Level为节点深度,ViewOrder为同级节点的显示顺序。ID,ParentID,Level,ViewOrder均为Integer。
这个表中,Level和ViewOrder都不是必需字段,只是因为在呈现树的时候,同级节点之间需要按照一定顺序来呈现故需要引入ViewOrder来记录同级节点的呈现顺序。
现在有一个新要求,不以树结构而以列表方式显示数据,但仍然要求按照以树状结构呈现数据时的顺序来排序,我因此加了一个Level字段来记录节点深度,问题:如何写SQL的Order By子句来达到这一要求?如果目前的数据库结构不能满足需要,那么应该怎么修改?请达人指教。


------解决方案--------------------
维护一个全路径的字段,比如:

节点名称 全路径
中国 中国\
湖南 中国\湖南\
长沙 中国\湖南\长沙\

着样就能排序在一起了。可以在触发器中维护,而且查询起来很方便
------解决方案--------------------
树型结构数据在数据库基本表中的存储及维护 
http://blog.csdn.net/playyuer/archive/2003/05/28/2855.aspx

一道 SQL 题 ... (关于树型结构的在关系表中的存储及其应用处理) 
http://blog.csdn.net/playyuer/archive/2003/03/06/2854.aspx