0

我设计了一个树视图结构如下: *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”的参数时,它将返回根“1”下所有内容的结果,预期结果:

ID  parentID
1        0
3        1
4        1
5        1
6        3
7        4
8        5
9        5
10       5
13      10

可以通过一个查询来解决这个问题吗?

4

1 回答 1

0

以您现在存储树的方式,不可能在一个纯 SQL 查询中获取整个树。您需要用其他语言(C#、支持循环的存储过程......)编写一个循环来获取树。

是一篇很好的文章,描述了如何使用存储树的方式(包括获取树和从树中删除项目)。

更有趣的是,该文章还描述了一种将树存储在数据库表中的方法,该方法允许在单个查询中获取整个树。这称为前序树遍历。您可以查看它以获取更多信息。我找到了一个C# 实现。它涉及比您现在使用的方式更多的逻辑,但对除最小树之外的所有树都具有更高的性能。

于 2013-08-16T01:02:45.387 回答