2011-03-22 69 views
0

由于它看起来像递归查询在MySQL中是不可能的,我想知道是否有解决方案来获取相同的信息,这也限制了我对数据库进行查询的次数。在我的情况下,我有什么相当于一棵树,并给予一个节点,我做一个路径回到根,并保存节点的名称,因为我去。给定一个这样的表格:PHP中的MySQL递归查询替换

id | parent 
------------- 
1 | 
2 | 1 
3 | 1 
4 | 2 
5 | 2 
6 | 5 

我想选择路径从6回到1(6,5,2,1)的所有ids。由于路径的总长度是未知的,我会假设唯一的方法是从一个查询中获取结果并构建一个新的查询,直到我回到根。然而,自从我上次使用MySQL以来,这已经过去了几年,所以如果我有点失去联系,这并不会让我感到意外。任何帮助,将不胜感激。

+3

http://dev.mysql.com/tech-resources/articles/hierarchical-data.html – 2011-03-23 00:02:57

+3

[也可以查看关于在关系数据库中存储分层数据的这个全面的前面的问题](http://stackoverflow.com /问题/ 4048151 /什么,是最选项换存储分层数据-IN-A的关系数据库)。 – Charles 2011-03-23 00:06:06

回答

1

因为它看起来像递归查询中的MySQL是不可能的

MySQL不支持“CONNECT BY”运营商,真正的 - 但你可以实现使用MySQL和回报递归过程/函数结果集从他们。