我设计了一个树视图结构如下: * parentID = 0表示树根
ID parentID
1 0
2 0
3 1
4 1
5 1
6 3
7 4
8 5
9 5
10 5
11 2
12 2
13 10
当我传递" 1"的参数时它将在Root" 1",预期结果:
下返回所有内容的结果ID parentID
1 0
3 1
4 1
5 1
6 3
7 4
8 5
9 5
10 5
13 10
可以通过单个查询解决这个问题吗?
答案 0 :(得分:0)
在您现在存储树的方式中,无法在一个纯SQL查询中获取整个树。您需要使用其他语言编写循环(C#,支持循环的存储过程,...)来获取树。
This是一篇很好的文章,描述了如何使用存储树的方式(包括获取树和从树中删除项目)。
更有趣的是,该文章还描述了一种在数据库表中存储树的方法, 允许在单个查询中获取整个树。它被称为pre-order tree traversal。您可以查找更多信息。我找到了C# implementation。它涉及的逻辑比你现在使用的方式更多,但除了最小的树之外,它们的性能更高。