2
 1 - Root - 20

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

这是 mysql 的嵌套集合模型。

假设_lftand_rgt是指示左右值的字段

如我所见,价值越低,孩子就越左?所以这里我们从左侧得到 2 个孩子,从右侧得到 2 个孩子,是否可以在不添加新字段(例如direction在插入之前指示孩子方向)的情况下做到这一点?

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

我怎样才能只查询那些相对于父母属于左侧的孩子?

请有任何建议,谢谢。

4

1 回答 1

1

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

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

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

将这些知识与同一页面上节点查询的路径相结合,我认为您将拥有所需的东西。

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

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

于 2014-05-18T14:48:31.447 回答