哥哥 你没有说明白到底要干什么阿: jiezhi() 可以实现3个表的全连接不知道是不是你需要的

解决方案 »

  1.   

    select * from a,b where a.id=b.id(+)
    union 
    select * from a,b where a.id(+)=b.id;这是2个表的,3个表的呢?
      

  2.   

    select * from a,b,c where a.id=x or b.id=x or c.id=x ?
      

  3.   

    楼主说的是表的外联吧?你的例子是两张表的外联,三张表是:
    select * from a,b where a.id = b.id(+)
    union
    select * from a,c where a.id = c.id(+)
    不知道你说的是不是这个意思?
    如果你是a表外联b表,b表外联c表,最后要这三张表写出个同时连接的语句,好像没有什么办法
      

  4.   

    补:
    如果是内联,就直接用RobinHZ的语句
      

  5.   

    试试吧
    select * from a,b,c where a.id=b.id(+) or a.id(+)=b.id or a.id = c.id(+) or a.id(+) = c.id
      

  6.   

    to 楼上:oracle报错:OR 或 IN操作数不允许外部连接符(+)我的意思是3个表中只要任意一个表有对应值的字段,就返回这条记录,其他2个表如果没有对应的值的话就补一个NULL,因此应该是3个表的full join,内联肯定是不行的,由于是8i,还不支持full join的写法,。
      

  7.   

    select * from c,(select * from a,b where a.id=b.id(+)) d where c.id(+) = d.id
      

  8.   

    to 楼上,会出现一个未明确定义列,因为你的d中间包含了2个id列
      

  9.   

    我觉得
       
     select * from a,b,c where a.id=b.id(+) or a.id(+)=b.id or a.id = c.id(+) 
      
     就够了