MySQL:获取给定父母的所有孩子(以及孩子的孩子的孩子)

时间:2018-02-05 08:42:46

标签: mysql join parent-child where-clause hierarchy

我有MYSQL Skillz,但这对我来说很重要......

我有这个数据库结构:

enter image description here

我希望得到孩子,爷爷,爷爷,孩子等等 给定父母的。

示例:

当我选择父189作为起点时,我想在这里得到Ids的结果:

id {234,235,238,239,240,245,246,2037,2038}

我的方法就在这里:

SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
SELECT @pv:=(SELECT GROUP_CONCAT(id SEPARATOR ',') FROM companies
WHERE parent IN (@pv)) AS lv FROM companies
JOIN
(SELECT @pv:=189)tmp
WHERE id IN (@pv)) a;

但是我只能在这里得到这个结果:ID:{234,235,246,238,240}

所以有些人失踪了......

是否还有其他可能获得给定父节点的所有子节点?

非常感谢您的任何提示......

编辑:好的,我已经读过这在mysql中是不可能的(少于mysql 8.0)所以我们使用的是较低版本的atm)

但我用PHP编写脚本,也许我可以编程方式找到一个解决方案而不是构建一个巨大的SQL查询....

0 个答案:

没有答案