Php 如何递归搜索数据库?
我有一个MySQL表,有3列*ID、Item\u ID和Dependency* 我想知道递归检查依赖项的最佳方法,例如,假设我正在检查项_ID 3的依赖项,它需要项_ID 2,那么我需要检查项_ID 2的依赖项 用PHP实现这一点的最佳方法是什么Php 如何递归搜索数据库?,php,mysql,recursion,Php,Mysql,Recursion,我有一个MySQL表,有3列*ID、Item\u ID和Dependency* 我想知道递归检查依赖项的最佳方法,例如,假设我正在检查项_ID 3的依赖项,它需要项_ID 2,那么我需要检查项_ID 2的依赖项 用PHP实现这一点的最佳方法是什么 ID | Item_ID | Dependency | ---+---------+------------+ 1 | 3 | 2 | ---+---------+------------+ 2 | 2 |
ID | Item_ID | Dependency |
---+---------+------------+
1 | 3 | 2 |
---+---------+------------+
2 | 2 | 4 |
---+---------+------------+
3 | 2 | 5 |
---+---------+------------+
伪代码:
func myQuery(item_ID) {
query (item_ID)
if (!item_ID.dependency())
else (myQuery(item_ID.dependency())
}
这将沿着列继续,直到您到达一个没有依赖项的项
流程摘要:将第一项传递给函数。检查它是否有依赖项,如果有,使用该依赖项再次调用函数。否则不执行任何操作,函数将返回。当然,您会希望保存查询返回的项目,但我将留给您。您可能希望该语句位于函数的最末尾,这样,当所有操作都完成时,您可以将数据从无依赖项排序到大多数依赖项。对于纯SQL解决方案:
如果希望遍历表中表示的层次结构,并在一个查询中返回数据,则可以对表使用一系列左外部联接语句来“遍历”关系,这可以达到指定的深度(联接数=树的深度)。然后,您需要决定要从这个大规模连接的表中投影(选择)哪些数据。是否要继续,直到依赖项为空?你的退出条件是什么?这已经被问了很多次了。只需在stackoverflow甚至google上搜索即可。依赖项是否是一个自引用列(即,同一个表上的ID)r它是否指向不同的表?查看此帖子:我希望它继续运行,直到没有依赖项是的