开发学院数据库Oracle Oracle兼容之层次查询:层次查询高级特性分析 阅读

Oracle兼容之层次查询:层次查询高级特性分析

 2008-09-04 12:50:44 来源:WEB开发网   
核心提示: 为了方便分析,我会在查询结构之后将查询结果用图表示,Oracle兼容之层次查询:层次查询高级特性分析(5),框中数据的顺序为t2.a,t1.a,t1.p,t1.c,上述的结果的层次结构为如图2,它将作为过滤条件在层次查询得到结果之后将结果集中满足条件的元组返回,简单情况2下面利用如下语句来

为了方便分析,我会在查询结构之后将查询结果用图表示。框中数据的顺序为t2.a,t1.a,t1.p,t1.c。上述的结果的层次结构为如图2,图中虚线框的数据表示层次查询中在路径信息中出现但没有在结果中出现的数据,但是connect by查询之后被WHERE语句过滤掉的数据。

Oracle兼容之层次查询:层次查询高级特性分析

从结果可以看出,层次查询结果的路径信息中有(0,0,1,11)元组,但是却没有出现在结果中,该元组在层次查询之后过滤掉了,也就是说该语句的采取的处理方式是和单表相同的层次查询的where语句的处理方式:层次查询的直接对象是t1×t2,connect by查询之后的数据集用条件t1.a=1进行过滤;而不是对σt1.a=1(t1×t2)的数据集进行connect by查询。

如果WHERE语句的所有子逻辑表达式都只涉及了一个表的话,这样的WHERE语句不会作为多个表的连接条件,它将作为过滤条件在层次查询得到结果之后将结果集中满足条件的元组返回。

简单情况2

下面利用如下语句来分析当WHERE所有子逻辑表达式都只涉及多个表的情况。

语句2:

   Selectlevel,
  sys_connect_by_path(t2.a,'/')path_a2,
  sys_connect_by_path(t1.a,'/')path_a1,
  sys_connect_by_path(p,'/')path_p,
  sys_connect_by_path(c,'/')path_c,t2.a,t1.a,p,c
  fromt1,t2
  wheret1.a=t2.a
  connectbypriorc=pstartwithp=0andt1.a=1;

查询的结果为:

  LEVEL
  PATH_A2
  PATH_A1
  PATH_P
  PATH_C
  A
  A
  P
  C
  1
  /1
  /1
  /0
  /1
  1
  1
  0
  1
  2
  /1/0
  /1/0
  /0/1
  /1/11
  0
  0
  1
  11
  3
  /1/0/0
  /1/0/0
  /0/1/11
  /1/11/111
  0
  0
  11
  111
  3
  /1/0/1
  /1/0/1
  /0/1/11
  /1/11/111
  1
  1
  11
  111
  2
  /1/1
  /1/1
  /0/1
  /1/11
  1
  1
  1
  11
  3
  /1/1/0
  /1/1/0
  /0/1/11
  /1/11/111
  0
  0
  11
  111
  3
  /1/1/1
  /1/1/1
  /0/1/11
  /1/11/111
  1
  1
  11
  111

结果显示查询的层次图如图3所示。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Oracle 兼容 层次

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接