gpt4 book ai didi

php - MySQL:查找子树的所有叶节点

转载 作者:可可西里 更新时间:2023-11-01 08:44:40 24 4
gpt4 key购买 nike

我有一个存储在 mySQL 表中的类别树结构,具有 category_idparent_id 关系。 Parent_id = Null对应根节点。

Category (category_id, category_name, parent_id)

我想做的是获取所有叶节点并给出节点的 category_id。我关注了this文章。它讨论了如何使用以下查询获取所有叶节点:

SELECT t1.category_name FROM
category AS t1 LEFT JOIN category as t2
ON t1.category_id = t2.parent_id
WHERE t2.category_id IS NULL;

但我正在尝试获取子树的叶节点。例如:

enter image description here

在给定节点 3 的上述结构中,结果将是:9、10、7、11、12、13。

我也试过这里给出的解决方案:adjacency model , given an id return the leaf nodes .但是我无法获得想要的结果。

你能帮我找到解决办法吗?

最佳答案

哦,好吧......我碰巧找到了解决方案......但是有点尴尬:

SELECT TRIM(RIGHT(TRIM(concat_ws(' ',
ifnull(t1.category_id,''),
ifnull(t2.category_id,''),
ifnull(t3.category_id,''),
ifnull(t4.category_id,'')
)),2)) AS leaf_node
FROM category AS t1
LEFT JOIN category AS t2 ON t2.parent_category = t1.category_id
LEFT JOIN category AS t3 ON t3.parent_category = t2.category_id
LEFT JOIN category AS t4 ON t4.parent_category = t3.category_id
WHERE t1.category_descr = 'Frames';

只要 category_id 小于 100,即只有两位数,它就可以工作,但这很容易适应。是的,一个完全疯狂/笨拙/(随便你怎么说)的解决方案,但它适合我的目的。

关于php - MySQL:查找子树的所有叶节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32093991/

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