sql server获取多个级别的数据

时间:2012-09-26 20:02:42

标签: sql-server-2008

如何使用SQL Server实现以下功能?我想在Sitefinity中获取页数。

表结构有很多列,但下面是重要的列

**Id**                  **parentid**                **title**
 ABC                        DEF                     title1
 XYZ                        DEF                     title2
 LLL                        DEF                     title3
 PPP                        ABC                     title4
 III                        ABC                     title5
 WWW                        PPP                     title6

页面可以包含子页面,子页面可以包含其他子页面。在数据库中,子页面用ID列表示,父页面用parentID表示。我怎样才能为每个父母计算孩子的数量?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,这样的事情应该让你开始:

select id as parent,
       title as title,
       count(*) as number_children
  from table as parent
 inner join table as children
    on children.parentid = parent.id
 group by 1,2

答案 1 :(得分:0)

我从另一个帖子得到答案:Hierarchical Queries in SQL Server 2005

  WITH Parent AS
(
    SELECT
        ID,
        ParentID,
        Name AS Path
    FROM
        tblHierarchy
    WHERE
        ParentID IS NULL

    UNION ALL

    SELECT
        TH.ID,
        TH.ParentID,
        CONVERT(varchar(128), Parent.Path + '/' + TH.Name) AS Path
    FROM
        tblHierarchy TH
    INNER JOIN
        Parent
    ON
        Parent.ID = TH.ParentID
)
SELECT * FROM Parent