我的数据结构是这样的:
+-------------+------+-------+
| USERID (PK) | LEFT | RIGHT |
+-------------+------+-------+
| 001 | | 002 |
| 002 | 003 | 004 |
| 003 | 005 | |
| 004 | | |
| 005 | 008 | 007 |
| 008 | | |
| 007 | 009 | |
| 009 | | |
+-------------+------+-------+
此数据结构表示二叉树。每行代表一个节点,每个节点都有一个USERID
。 LEFT
和RIGHT
列中的条目通过引用USERID
来表示该节点的两个子节点。我想遍历这棵树。
我正在使用带有Access数据库的Visual Studio 2005。
答案 0 :(得分:2)
我能想出的最佳答案是你选择了完全错误的表示数据的方法。
表示用户ID的一种更明智的方法是(我猜)表中包含用户详细信息的简单列,其中包含一个快速查找的索引。然后“遍历”退化为一个简单的选择并迭代结果集。
如果您想继续使用当前(IMO愚蠢)表结构,那么SQL不会帮助您遍历树。如果您尝试遍历数据库中的树,您将最终对树中的每个节点进行选择,这将非常慢。
最好的办法是选择表格的所有行,在内存中构建一个树,然后遍历该树。