我最近一直在使用Nested Set Model。我喜欢为几乎所有有用的操作和 View 设计查询。我坚持的一件事是如何选择节点的直接子代(并且仅选择子代,而不是进一步的子代!)。
老实说,我确实知道一种方法-但它涉及大量的SQL。我敢肯定有一个更直接的解决方案。
最佳答案
您是否阅读过您张贴的文章?在“查找节点的直接下属”标题下
SELECT node.name, (COUNT(parent.name) - (sub_tree.depth + 1)) AS depth
FROM nested_category AS node,
nested_category AS parent,
nested_category AS sub_parent,
(
SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.name = 'PORTABLE ELECTRONICS'
GROUP BY node.name
ORDER BY node.lft
)AS sub_tree
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
AND sub_parent.name = sub_tree.name
GROUP BY node.name
HAVING depth <= 1
ORDER BY node.lft;
但是,我要做的(这是作弊)是将嵌套集与邻接列表结合在一起-我在表中嵌入了“parent_id”,因此我可以轻松地请求节点的子代。
关于sql - 有没有简单的方法来查询节点的子级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/659504/