回答
拉斐爾科萊解釋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. 填充左側元素的100%擴展到父級左側邊界
- 2. 加入左側和右側
- 3. divs在左側和右側
- 4. CSS左側和右側
- 5. TextView在父親的右側
- 6. 將文本框固定在右側和左側(因此在父級調整大小時拉伸)
- 7. 如何在父級左側創建下拉菜單?
- 8. 修整數組的左側和右側
- 9. 左側和右側的行程sdg
- 10. 剝離字符的左側和右側
- 11. 左側和右側的DIV定位
- 12. 位元件的左側和右側
- 13. UIButton在左側和右側的圖像
- 14. 元素左側和右側的文本
- 15. 左側和右側jQuery動畫運動
- 16. 左側和右側加入查詢
- 17. 右側和左側菜單CSS?
- 18. 如何對齊右側和左側
- 19. 左側和右側裁剪圖像
- 20. .js滾動頁面左側和右側
- 21. 動畫移動到左側和右側?
- 22. 左側浮標和右側內容
- 23. 填充右側和左側邊框
- 24. 動畫從右側和左側查看
- 25. 翻轉svg顛倒和左側右側
- 26. 拆下左側和右側邊框
- 27. 對齊按鈕左側,中間,右側
- 28. 如何在MDI父級的右側校正器中設置圖像?
- 29. 兩側(左側和右側)的bootstrap offcanvas示例
- 30. iOS左側,右側和底部轉換的側面菜單庫
仔細查閱鏈接給出下它有大約家長留下了非常好的解釋和父權 http://www.serpentcs.com/serpentcs-openerp-parent_left-parent_right-explained – 2012-09-06 12:22:27