php - 嵌套集合如何确定左右节点

标签 php mysql nested-set-model

 1 - Root - 20

 2 - child1 - 3
 4 - child2 - 5
 6 - child3 - 7
 8 - child4 - 9

这是mysql的嵌套集合模型。

假设_lft_rgt是指示左值和右值的字段

据我所知, child 越左,值越低?所以这里我们从左侧得到 2 个子级,从右侧得到 2 个子级,是否可以在不添加像 direction 这样的新字段的情况下完成,该字段可以在插入之前指示子级方向?

我只想使用 _lft_rgt 来确定这一点,我无法弄清楚逻辑是什么,即使是文字,也不需要代码

如何只查询相对于父级属于左侧的子级?

请给点建议,谢谢。

最佳答案

我认为您确实需要努力理解嵌套集的工作原理。

我会阅读此模型的图表以及如何插入新节点(其余的也是很好的信息)。 http://falsinsoft.blogspot.com/2013/01/tree-in-sql-database-nested-set-model.html

请注意,所有叶子都是 _rgt = _lft + 1。最左边叶子的 _lft 是 min(select _lft .... 其中 _rgt = _lft + 1)。

将这些知识与同一页面上的节点查询路径相结合,我认为您将获得所需的内容。

另一个资源是维基百科页面:

http://en.wikipedia.org/wiki/Nested_set_model

关于php - 嵌套集合如何确定左右节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23722981/

相关文章:

php - 制作排行榜排名,将记录放入 SQL 数据库中

php - session 变量未保持设置状态

php - 在 MySql 数据库中存储表情符号。显示???在 phpmyadmin 中

当 TEXT 列中的数据线性增长时,MySQL 查询时间呈指数增长

php - 嵌套集模型 Php 库

sql - jOOQ复杂更新-如何锁定表?

php - 从 php 中的字符串中删除单词

php mysql 连接三个表并对相同id的项求和

php - 使用 php 更新数据库中的值

nested-set-model - 在嵌套集中查找最低公共(public)祖先