有四个表,比如说有表a,b,c,d
a表有字段a1,a2
b表有字段a1,b1
c表有字段a1,c1,c2,表a,b,c的a1是主键
d表有字段c1,d1,d2,表d的c1是主键
现在想将a1,a2,b1,c2,d1这几个字段值取出来,该怎么写外连接那?按照a1字段为主。
我是这样写的
select * from 
(select a.a1,a.a2,b.b1 from a,b where a.a1=b.a1(+)) ML,
(select c.a1,c.c2,d.d1 from c,d where c.c1=d.c1(+)) mm, 
 where ML.a1=mm.a1(+);
但是查询出来的数据中c.a1,c.c2,d.d1都变为null了,
select a.a1,a.a2,b.b1 from a,b where a.a1=b.a1(+)和select c.a1,c.c2,d.d1 from c,d where c.c1=d.c1(+)单独执行时,查询出来的数据都是正常的。 

解决方案 »

  1.   


    --我觉的下面这样就可以了
    select a.a1,a.a2,b.b1,c,c2,d.d1 from a,b,c,d where a.a1=b.a1 and b.a1=c.a1 and c.c1=d.c1;
      

  2.   

    select a.a1,a.a2,b.b1,d.d1 from a inner join b on a.a1=b.a1 inner join c on a.a1=c.a1 inner join d on c.c1=d.c1
      

  3.   


    select a.a1,a.a2,b.b1,d.d1 from a LEFT join b on a.a1=b.a1 LEFT join c on a.a1=c.a1 LEFT join d on c.c1=d.c1
    这次是以A表为主啦~~