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

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

 2008-09-04 12:50:44 来源:WEB开发网   
核心提示: 如果语句2也是按照语句1相同的处理,以t1×t2作为connect by查询的直接对象,Oracle兼容之层次查询:层次查询高级特性分析(6),where语句被作为过滤器使用,那么在结果的路径信息中一定会出现t1.a<>t2.a的元组,一部分作为过滤条件,下面将探讨

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

如果语句2也是按照语句1相同的处理,以t1×t2作为connect by查询的直接对象,where语句被作为过滤器使用,那么在结果的路径信息中一定会出现t1.a<>t2.a的元组。但从上面的结果来看,层次查询的结果和路径中均没有出现t1.a<>t2.a的元组,我们可以肯定:语句2种的where语句不是作为connect by查询之后的过滤器,而是作为t1和t2的连接条件成为了connect by查询之前对其查询数据的过滤条件;也就是说,层次查询的不再是对t1×t2;而是对σt1.a=t2.a(t1×t2)的数据集进行connect by查询。

对于其中所有的单个逻辑表达式都涉及多个表的where语句,是将整个where语句作为connect by查询前的多表的连接条件使用。

之前的两个WHERE语句都是单纯的由一类逻辑表达式(涉及表的个数)构成。但对于同时含有两种类型的WHERE语句,理论上有以下几种处理方式:

1. 全部作为过滤条件,在connect by查询之后进行;

2. 全部作为连接条件,在connect by查询之前进行;

3. 一部分作为连接条件,一部分作为过滤条件。

下面将探讨各种情况下由两种逻辑表达式构成的查询。

简单情况3

情况3讨论由AND连接的不同种类的逻辑表达式的WHERE语句的处理情况。

语句3: 

   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.aandt1.a=1
  connectbypriorc=pstartwithp=0;

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

Tags:Oracle 兼容 层次

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接