您好我想在sql数据库中创建树结构。我需要具备以下属性。
我查看了Materialized-Path和hierarchyId,但是大多数示例都使用像AdventureWorks这样的示例,这对我来说太复杂了。
仅供记录我使用Sql Server 2008 R2和C#4.0
答案 0 :(得分:1)
SQL Server支持recursive CTEs,它们可能对您有帮助。
您可以使用以下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上的搜索结果。
答案 1 :(得分:0)
也许看一下嵌套集?见Joe Celko。