oralce中查询某个机构号及其下属机构号,这样的树形数据查询问题

Oracle中使用connect by prior递归算法可以解决这类问题

语法:

select .... from  tablename start with 条件1   connect by 条件2 
where  条件3 

例如:  select * from table start with branch_id = "B00000"
          connect  by prior   branch_id = parent_branch_id;
说明: 1.  条件1是根节点的限定语句,可以放宽条件,取得多个根节点,实际上就是多个树
              条件2是连接条件,其中prior表示上一条记录,像例子中的  上一条记录的branch_id是本记录的parent_branch_id
              条件3是过滤条件
         2.  connect  by 说明每行数据将按层次顺序检索,priory 运算符必须放置在连接关系的两列中的某一个的前面,对于节点间的父子关系,prior运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是自顶向下还是自底向上
         3. 关于prior具体使用,prior 在connect by 字句等号的后面,则强制从叶节点到根节点的顺序检索,如果在connect  by 字句的前面,像举的例子一样,就是从根节点查所有的子节点。
        4. 在树结构查询的时候,可以使用where 过滤节点,order by排序
 


你可能感兴趣的:(ORACLE)