表示Sql Server中的树结构,包括虚拟路径

嗨,我想在SQL数据库中创建一个树结构。我需要具备以下属性。 快速选择 只需像Cat2 / Cat4这样的字符串即可轻松选择 - >返回Cat5和Cat6 支持虚拟类别 插入应该很容易,但与快速选择相比并不重要 删除与插入相同,容易会很好,但同样能够快速选择更重要 重新排序也不如Select那么重要 我查看了Materialized-Path和hierarchyId,但大多数示例都使用像AdventureWorks这样的示例,这对我来说太复杂了。 只是为了记录我使用Sql Server 2008 R2和C#4.0     
已邀请:
SQL Server支持递归CTE,它们可能对您有所帮助。 您可以使用以下SQL从数据构建树结构:
WITH cat_tree AS (
  SELECT cat_id, cat_name, parent_id,
         0 AS level, CAST('0' AS varchar(90)) AS path
    FROM cats
   WHERE parent_id IS NULL
  UNION ALL
  SELECT c.cat_id, c.cat_name, c.parent_id,
      ct.level + 1,
      CAST(ct.path+'.'+CAST(
       (row_number() OVER (ORDER BY ct.cat_id)) AS varchar) AS varchar(90))
    FROM cats c
    JOIN cat_tree ct ON c.parent_id = ct.cat_id)
SELECT * FROM cat_tree
 ORDER BY path;
看一下SQL Fiddle的结果。     
也许看一下嵌套集?见Joe Celko。     

要回复问题请先登录注册