日期:2014-05-17  浏览次数:20825 次

ORACLE 语句 右连接 疑问
有个语句:

select ......
 from ....
 where pp.segment_type(+) = 'E'

上面红色是啥意思,怎么跟右连接这么不象阿。

右连接不是右边也要是个表的列名么,这个 'E' 进行右连接,啥意思啊,
不太懂PL/SQL
谢谢。











---下面 右连接,我知道意思,但是上面的 不知道啥意思啊。
数据表的连接有: 
1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 
2、外连接: 包括 
  (1)左外连接(左边的表不加限制) 
  (2)右外连接(右边的表不加限制) 
  (3)全外连接(左右两表都不加限制) 
3、自连接(连接发生在一张基表内) 
select a.studentno, a.studentname, b.classname
  from students a, classes b
  where a.classid(+) = b.classid;
STUDENTNO STUDENTNAM CLASSNAME
---------- ---------- ------------------------------
  1 aa 一年级一班
  2 bb 一年级二班
  一年级三班
以上语句是右连接:
即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配。也就是说上例中,无论会不会出现某个班级没有一个学生的情况,这个班级的名字都会在查询结构中出现。

即"(+)"表示所在的列的值,如果没有匹配的值,则加入null值,并显示出来。.

//通常将全量集合与部分集合连接时,在部分集合的列后面带上(+),以达到没有匹配时,也要显示出一个null的效果。



------解决方案--------------------
这里的(+)无任何意义,加和不加一个样。


右边已经是具体值了,有该值记录就返回之,无该值记录则无返回结果。
------解决方案--------------------
select ......
 from ....
 where pp.segment_type(+) = 'E'
这个右连接和
select ......
 from ....
 where pp.segment_type = 'E'
貌似没有区别。