[英]MySQL - Is it possible to get all sub-items in a hierarchy?
我看了看这个:
它正在谈论的是CTE,这在MySQL中不存在。 我有这样的结构:
category_id | parent_category_id | name
我想检索给定category_id的所有子类别ID。 是否可以不获取层级然后遍历这些层级而实现?
这仅仅是一个邻接模型表吗? 这样一来,在不知道最大深度的情况下就不可能进行查询。
值得深思的是在MySQL中管理分层数据 (尽管我不主张对经常变化的数据使用嵌套集模型 )。
更具体地讲,使用很多(左)联接:如果左联接的数量与树的最大深度一样多,则可以在一个查询中进行。 这就是很多人倾向于保存特定类别的“深度”的原因,因此您可以过滤并限制对同一表的联接数量,使其更为合理。
就个人而言,为了定期更改数据:我倾向于在插入/更新上配置触发器,该触发器将基于id保存/缓存节点的当前“路径”(例如:路径为“ 12/62/28/345” ',其中定界符/
之间的每一步都是父节点的主键,其顺序正确(345的父级为28,28的父级为62,依此类推),因此我可以像这样使用一个连接来查询它( /用作分隔符):
SELECT j.*
FROM tablename o
JOIN tablename j
WHERE j.path LIKE CONCAT (o.path,'/%')
AND j.id != o.id -- skip parent asked for.
WHERE o.id = <the id of the node you're looking for>;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.