现有一个主表,如下:
id,name
1  aa
2  bb
另外有两个子表,如下:
主表ID  id   name1
1       1    a
1       2    b
1       3    c
1       4    d
和子表2
主表ID  id   name2
1       1    张三
1       2    李四
现在想要得到一个查询结果:
主表ID   name1   name2
1        a       张三
1        b       李四
1        c        
1        d      
请问该怎么写呀??各位帮帮忙吧!! 

解决方案 »

  1.   

    用左连接可以实现,具体的自己试试![color=#FFFF00]left join on[/color]
      

  2.   

    --b为从表一 c为从表2
     select b.id,nvl(name1,null),nvl(name2,null)
     from b,c
     where b.id=c.id(+)   ID N NVL(
    ----- - ----
        1 a 张三
        2 b 李四
        4 d
        3 c
      

  3.   

    select A.id,B.name1,c.name2 
    form A
    right join B on B.主表ID = A.id
    left join C on C.主表ID = A.id
      

  4.   

    你的需求不需要 关联a表
    将从表的id进行等值连接就可以了
      

  5.   

    假设主表为table,字表分别为table1,table2select a.主表ID,b.name1,c.name2
      from table a,table1 b,table c
     where a.主表ID = b.主表ID 
       and b.主表ID = c.主表ID(+) 
      

  6.   

    再加个过滤条件select A.id,B.name1,c.name2  
    form A
    right join B on B.主表ID = A.id
    left join C on C.主表ID = A.id
    where A.id = 1
      

  7.   

    create table A(id number(10),name varchar2(20));
    insert into A values(1,'aa');
    insert into A values(2,'bb');
    create table B(主表id number(10),id number(10),name1 varchar2(20));
    insert into B values(1,1,'a');
    insert into B values(1,2,'b');
    insert into B values(1,3,'c');
    insert into B values(1,4,'d');
    create table C(主表id number(10),id number(10),name2 varchar2(20));
    insert into C values(1,1,'张三');
    insert into C values(1,2,'李四');
    select B.主表ID, B.Name1,C.name2 from A,B,C where A.id(+) = B.id and B.id=C.id(+);