从数据库生成面包屑

时间:2010-11-08 20:39:25

标签: .net asp.net sql-server sql-server-2005 sql-server-2008

我有数据表

 id       parent    order   tab       desc
------------------------------------------------------------------------
    1        Null   1   False       abcdef
    2       Null    2   False       efgh
    3       1       1   False       sadad
    4       1       2   False       aasd
    5       3       1   True        qwer
    6       3       1   True        asdad
    7       5       1   False       zxzc
    8       5       2   False       okli

此表包含有关子部分的所有页面的数据,而tab列表示它是该页面上的选项卡而不是新页面

我想生成xml并使用这些数据生成面包屑,如何使用这些数据实现这一目标?

1 个答案:

答案 0 :(得分:2)

对于面包屑,您需要使用这样的递归CTE:

;with Tree as
(
   select CONVERT(varchar(100), id) as Path, id
   from Tbl
   where Tbl.Parent is null

   union all

   select Tree.Path + ' > ' + id as Path, id
   from Tbl

        inner join 
        Tree
        on Tree.id = Tbl.Parent
)

select * from Tree

这里的痕迹只是每行的ID,但您可以将其更改为您想要的任何列(并且还包括您在结果集中想要的任何其他列)。