gpt4 book ai didi

mysql - 使用 MySQL 中的邻接模型获取父节点的子节点

转载 作者:行者123 更新时间:2023-11-29 06:50:27 25 4
gpt4 key购买 nike

我在使用 MySQL 表的当前模型时遇到困难,即我似乎无法正确查询特定父节点的所有子节点。正如标题所述,我正在使用邻接模型。

问题是我在网上找到的大多数方法要么查询所有 叶节点,要么选择的不仅仅是我试图抓取的内容。

我关注的第一个教程是在 MikeHillyer.com 上,他的解决方案的效果是:

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

问题在于,它会查询所有叶节点,而不仅仅是与父节点相关的叶节点。他还建议使用嵌套集模型,我真的不想使用它,因为插入新节点有点困难(不过我确实意识到它很重要,我会只是不必求助于它)。

我找到的下一个解决方案是在共享 slideshow 上在幻灯片 53 上(从 StackOverflow 上的另一个答案找到)。该解决方案应该查询节点的直系子节点,只是...该解决方案似乎对我不起作用。

这是他们的解决方案:

SELECT * FROM Comments cl
LEFT JOIN Comments c2
ON(c2.parent_id = cl.comment_id);

现在,我的表有点不同,所以我调整了一些代码。我的表格的简短摘录如下:

 Table: category
id | parent | section | title | ...
----+--------+----------+----------+-----
1 | NULL | home | Home | ...
2 | NULL | software | Software | ...
3 | 2 | software | Desktop | ...
4 | 2 | software | Mobile | ...
5 | NULL | about | About | ...
6 | 5 | about | Legal | ...
... | ... | ... | ... | ...

当我修改上面的查询时,我做了以下事情:

SELECT * FROM category cat1
LEFT JOIN category cat2
ON(category.parent = cl.id);

这导致一切都被查询并绑定(bind)在一个表中,比未更改的表长两倍(显然不是我要找的)

我很确定我的查询有问题,所以我只是希望这里有人可以纠正我的错误并指出正确的方向。

我知道使用嵌套集模型应该更容易,但我只是不喜欢该选项,因为添加新选项很困难。

最佳答案

看起来你很亲近。您的左连接保证将返回表中的所有记录。

请参阅以下查询。

SELECT c1.*, c2.id FROM category c1 INNER JOIN category c2 ON (c1.parent = c2.id);

关于mysql - 使用 MySQL 中的邻接模型获取父节点的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15776578/

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