如何递归获取此MySQL表中行的“父级ID”?

我的数据库看起来像(pligg cms,样本数据)

id  catID parentID   catName

1 1 0 location

2 2 0 color

3 3 1 USA

4 4 3 Illinois

5 5 3 Chicago

6 6 2 Black

7 7 2 Red

假设,如何获取芝加哥的顶级parentID,它应该是位置。

我是否在php中编写了递归函数,或者在mysql中可行?

回答:

该网站非常好地概述了在mysql和PHP中存储分层数据的不同方法。要回答您的问题,最简单的方法是使用php和递归。您可以使用其他方法,例如modified

preorder transversal,不需要多个数据库查询。但是,在处理大量插入和更新时,此方法的实现可能会更加复杂。

另一种非常酷的方法,也是我个人最喜欢的方法,是将平面表解析为树的最有效/最优雅的方法中提到的所谓的“闭合表” /“邻接关系” 。

关于您的评论,您基本上必须进行循环或递归函数,以选择芝加哥的父母,然后选择父母的父母,依此类推。

$stack = array();

$parent = 3;

while($parent != 0){

$data = (put your mysql to get the row with parentID = $parent)

$parent = data['parentID'];

$stack[] = $data;

}

$stack = array_reverse($stack);

然后堆栈将包含芝加哥的父母(即美国的位置)

以上是 如何递归获取此MySQL表中行的“父级ID”? 的全部内容, 来源链接: utcz.com/qa/419545.html

回到顶部