我有一个很大的mysql表,父-子关系存储在嵌套的集合模型中(左值和右值)。
这样就很容易找到给定项的所有子项。
现在,我如何找到某个项目的深度。
行示例:
父级ID,分类单元ID,分类单元名称,lft,rgt
对于某个行(分类单元id),我想知道它离根节点有多远。
这里需要注意的是,在我构建数据结构的方式中,每个终端节点(没有自己的子节点的节点)lft=rgt。我知道网上发布的许多示例都有rgt=lft+1,但我们决定不这样做只是为了方便。
总结:
嵌套集模型,需要找到给定节点的深度(到达根节点的数目)。

最佳答案

我想出来了。
实际上,您必须查询包含在内部查找的节点的所有节点。例如,我看到一个节点lft=rgt=7330,我想要它的深度。我只是想

Select count(*)
 from table
 where lft<7330
 AND   rgt>7330

在使用结果之前,您可能需要将其添加1,因为它实际上告诉您之前的生成数,而不是实际级别。但它工作得很快!

关于mysql - 嵌套集的深度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12269806/

10-11 01:42