回答
拉斐尔科莱解释his answer about OpenERP Server:
parent_left和parent_right是涉及 的PARENT_ID领域特殊领域。这些字段的目的是使查询 有效地执行:使用parent_left和parent_right,您可以检索节点的所有后代,而不使用 进行递归查询。
考虑层次结构中的两个节点A和B.例如,A和B可以是合作伙伴 类别。他们整场parent_left和 parent_right是这样的:
B is a descendant of A in the hierarchy (defined by parent_id)
当且仅当
A.parent_left < B.parent_left and A.parent_left < B.parent_right and B.parent_left < A.parent_right and B.parent_right < A.parent_right
所以,想象一下,你有六个合作伙伴类别如下图所示。您可以通过遍历树来指定parent_left和parent_right,并且 。结果 显示在每个节点旁边的括号内。请注意, 的值是最优的;在实践中,你可以在数字上留下空白。
- 客户(1,10)
- 消费者(2,3)
- 伙伴(4,9)
- 基本伙伴(5,6)
- 金牌合作伙伴(7, 8)
- 供应商(11,12)
您可以使用单个SQL 查询检索客户的所有子类别。请注意,值1和10是Customers的parent_left和parent_right;它们可以作为查询 本身的一部分进行检索。
SELECT id FROM partner_category WHERE parent_left > 1 AND parent_left < 10
的最后一句话是,parent_left和parent_right可以在不遍历整个层次结构进行更新 。删除节点不需要 需要任何更改。为了添加一个节点,你可以使用两个UPDATE查询修改parent_left 和parent_right:一个用于在新节点祖先的parent_left和parent_right之间“创建一些空间” ,另一个用于移动新节点的parent_left和parent_right跟随兄弟姐妹及其后代的 。所以parent_right和parent_right可以被有效地维护。
不错的副本从https://answers.launchpad.net/openobject-server/+question/186704 – 2012-08-09 05:06:43
你能看到评论“感谢Raphael Collet(OpenERP)的好解释。”我给了它的合适人选。在评论阅读完整答案之前。 – user1576199 2012-08-09 05:49:06
您的确需要更明确一点,而不仅仅是感谢发布您在答案中复制的所有内容的人。我已经编辑了答案,以说明如何引用和引用其他来源的材料,以便明确信用到期的位置。该材料符合CC Attribution许可证,因此您必须非常明确地表明署名。 – 2012-08-09 15:19:26
这些是Nested Set Model领域。在SQL中用未绑定深度管理分层数据结构。文章Managing Hierarchical Data in MySQL用SQL中的示例解释了这个模型的细节。
OpenERP使用嵌套集模型来管理帐户和仓库位置等树木。 parent_left
和parent_right
列等于上述文章中的right
和left
列。
能详细解释一下吗? – user1576199 2012-08-08 10:09:38
答案中的文章链接具有非常明确的示例和图表的所有细节。虽然标题说'在MySQL中',但这些信息与任何特定的SQL数据库都没有关系。 – 2012-08-08 10:44:19
感谢穆罕默德阿里 – user1576199 2012-08-08 15:26:43
- 1. 如何在父级左侧创建下拉菜单?
- 2. 修整数组的左侧和右侧
- 3. 左侧和右侧的DIV定位
- 4. 左侧和右侧加入查询
- 5. 拆下左侧和右侧边框
- 6. 如何对齐右侧和左侧
- 7. 翻转svg颠倒和左侧右侧
- 8. 动画从右侧和左侧查看
- 9. 填充右侧和左侧边框
- 10. 动画移动到左侧和右侧?
- 11. 对齐按钮左侧,中间,右侧
- 12. 如何在MDI父级的右侧校正器中设置图像?
- 13. 父部门右侧的额外填充
- 14. 父宽度的左侧动画帐户
- 15. LinearLayout的左侧是TextView,右侧是RadioButton?
- 16. 的左侧和右侧的div来居中DIV
- 17. OpenGL翻译glm右侧还是左侧?
- 18. UIScrollView拖动到右侧或左侧
- 19. 溢出到左侧而不是右侧
- 20. SQL长度,左侧,右侧新列
- 21. 仅iPad风景(左侧或右侧)
- 22. UIToolBar左侧/右侧按钮文本
- 23. 手风琴中的选项卡左侧和内容右侧
- 24. SQL查询删除字段中的左侧和右侧字符
- 25. 左侧和右侧图像的中心文字
- 26. 左右侧的阴影
- 27. CSS |使div浮动到右侧并向父级添加滚动条
- 28. 随着键盘(左侧和右侧)在闪存中移动
- 29. 在as3中通过向量循环到左侧和右侧
- 30. 的Python:索引的左侧和右侧的分配
仔细查阅链接给出下它有大约家长留下了非常好的解释和父权 http://www.serpentcs.com/serpentcs-openerp-parent_left-parent_right-explained – 2012-09-06 12:22:27