gpt4 book ai didi

php - MySQL 和 PHP 使用 parent_id 获取层次结构中项目的深度

转载 作者:行者123 更新时间:2023-11-29 04:54:50 26 4
gpt4 key购买 nike

我有一个通用的数据库结构,使用 parent_id 作为层次结构。

我正在尝试找出项目的深度。

举个例子:

ID  Name    Parent_id
1 Games 0
2 Nintendo 1
3 DS 2
4 3D 3

如果我想找出 ID 4 (3D) 的深度,答案是 3。知道我将如何查询这个或 sql 和 php 的组合吗?

谢谢!

最佳答案

你有一个天真的实现吗?你在寻找最好的方法吗?树是递归的,所以我认为您将查询与树高度一样多的数据库。

这个伪php

function getHeigth($item_name) {
$res = 0;
$current_parent_id = executeSql("SELECT parent_id FROM games g WHERE g.name= ? " , $item_name);
while ($current_parent_id != 0) {
$current_parent_id = executeSql("SELECT parent_id FROM games g WHERE g.id = ? " , $current_parent_id);
$res = $res + 1;
}
return $res;
}

如果你的三个不平衡,这个算法会表现不好。

存储深度会提高性能,但会影响 UPDATE 和 INSERT 查询。

此外,如果你的树坏了,这个 Psuedo-PHP 可能会永远循环

关于php - MySQL 和 PHP 使用 parent_id 获取层次结构中项目的深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com