gpt4 book ai didi

php - 我应该如何在给定结构中执行树遍历?

转载 作者:行者123 更新时间:2023-11-29 15:07:36 25 4
gpt4 key购买 nike

使命

我正在尝试找出下面所示的一组表格中的 child 数量。环境是 LAMP,但通过其他语法提供正确方向的帮助值得赞赏。

表结构

users
-----
user_id
parent_id


user_meta
---------
user_id
registration_date


user_levels
-----------
user_id
level

这个基本结构不太可能改变,但可以扩展。

用例

select
users.user_id
from
users
inner join
user_meta
on users.user_id = user_meta.user_id
inner join
user_levels
on users.user_id = user_levels.user_id
where
parent_id = *x*
and
registration_date > *certain date*
and
level < *certain level*

条件

  • 仅当用户的后代级别低于给定的*特定级别*时才算作后代。如果后代的级别不低于该节点,则该节点是叶子,但应从计数中排除。
  • 鉴于*特定级别**特定日期*对于每个查询/查询组都是相同的。

我尝试在循环中使用它,但查询量很快就会增加。该解决方案可能可以在 cron 作业中使用和存储,但我更喜欢 as-real-time-as-it-gets-solution。

最佳答案

对于当前的数据模型,没有比递归查询数据库更有效的方法了。如果您能够更改数据存储方式以包含更多信息,则可以使用修改的先序树遍历(也称为嵌套集模型)。 MySQL website 上的一篇文章讨论了此模型。 。这个网站上也有很多例子,搜索“Modified Pre-order Tree Traversal”就可以了。

关于php - 我应该如何在给定结构中执行树遍历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1660926/

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