zoukankan      html  css  js  c++  java
  • The parent_left and parent_right on OpenERP

    parent_left parent_right parent_id字段都涉及到特殊领域。这些字段的目的是让在层次结构中的查询,有效地执行:与parent_left parent_right,您可以检索所有后代节点而不做递归查询。

    考虑两个节点层次结构中的A和B。 A和B可以是合作伙伴的类别,例如。他们的的整数字段parent_left parent_right是这样的:

            B是一个层次结构中的A后裔(由PARENT_ID定义)

    当且仅当

            A.parent_left<B.parent_left,B.parent_right B.parent_left 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是parent_left和parent_right顾客,它们可以检索查询本身的一部分。

            SELECT ID从partner_category的
            WHERE parent_left>1 parent_left<10

    最后一句话是可以更新parent_left parent_right,,无需遍历整个层次。移除一个节点,不需要任何改变。为了增加一个节点,你可以适应parent_left和parent_right2 UPDATE查询:1,以“使一些空间”之间的parent_left和parent_right节点的长辈,和一个以转移了所有的节点“在正确的parent_left parent_right “新的位置。所以parent_left parent_right可以有效地保持。

  • 相关阅读:
    ASP.Net Cms
    GetHashCode函数所存在的陷阱
    NH的系统架构
    Icomparable<T> 和 Icomparaer<T> 实现顺序关系
    《创业法典》:用流程图告诉你如何创业
    创业之前,网站先行
    杨卫华:新浪微博的架构发展历程
    技术开发人员为什么会无奈苦逼?
    使用面向对象的、完整的单点登录功能
    SilverLight之我见
  • 原文地址:https://www.cnblogs.com/alangwansui/p/3040227.html
Copyright © 2011-2022 走看看