表A:ID  name phone 
表B:ID  no1  name2  no2  name2 表A的ID 相当于主键 
表B的no1和no2 都相当于 外键查出  no1和no2 各自多对应的 phone
我试了下单个查询的话可以做出来:
select b.ID,no1,name1,b.phone from A a,B b where a.ID=no1select b.ID,no2,name2,b.phone from A a,B b where a.ID=no2
现在要得到的新表字段是 :例如下
b.ID,  no1,  name1,  phone,   no2,  name2,  phone     
1      001   张三    138***   007   李四    157***
2      018   小刘    null     002   老马    null
3      123   张俊    158***   076   小鸠    null
4      056   利水    null     765   守卫    134***

解决方案 »

  1.   


    select   b.ID,b.no1,b.name1,a.phone,b.no2,b.name2,c.phone 
    from   A   a,B   b,A c
    where   a.ID=b.no1 and c.ID=b.no2
      

  2.   


    --我觉得你的name也是从A表取的吧
    select b.ID,
           b.no1,a.name as name1,a.phone as phone1,
           b.no2,c.name as name2,c.phone as phone2 
    from   A   a,B   b,A c
    where   a.ID=b.no1 and c.ID=b.no2
      

  3.   

    你说的表一的Name 和表二中的name 不一样的  例如表1中的是一张人员信息表,里面肯定有许多是重名的表二的是有Id no1和no2 name1 name2 具体到某一个人了
      

  4.   


    我用一个条件比如是时间 查询表B等到结果:
    select * from where time='2011-5-1'
    得到结果如下:
    ID,     no1,     name1,    no2,     name2               
    1       001     张三         007       李四         
    2       018     小刘         0          0         
    3       123     张俊         076       小鸠         
    4        0       0          0          0
    5       056     利水         765       守卫    结果是0 的这行也是结果必须要的,但是我用了select   b.ID,b.no1,b.name1,a.phone,b.no2,b.name2,c.phone 
    from   A   a,B   b,A c
    where   a.ID=b.no1 and c.ID=b.no2这个方法查询以后那行结果却不存在了,请问怎加个判断让那行数据存在啊
      

  5.   


    --加个左连就好了
    select   b.ID,b.no1,b.name1,a.phone,b.no2,b.name2,c.phone 
    from   A   a,B   b,A c
    where   a.ID(+)=b.no1 and c.ID(+)=b.no2