物料表:   table1
    物料号    采购员编号   物料员编号
     M1        N1           N2
     M2        N3           N7
        .....
  
员工表:  table1
    员工编号   员工姓名
     N1         AAA
     N2         BBB
     N3         CCC
     N4         DDD
       ......
怎么用SQL获取
     物料号    采购员编号   姓名    物料员编号      姓名
     M1        N1           AAA     N2              BBB
       .....
这样的记录 ,最好用join on 

解决方案 »

  1.   

    declare @a table(物料号 varchar(10), 采购员编号 varchar(10), 物料员编号 varchar(10))
    insert @a select 'M1', 'N1', 'N2'
    union all select 'M2', 'N3', 'N7'declare @b table(员工编号 varchar(10), 员工姓名 varchar(10))
    insert @b select 'N1', 'AAA'
    union all select 'N2', 'BBB'
    union all select 'N3', 'CCC'
    union all select 'N4', 'DDD'select 物料号,采购员编号,b.员工姓名 [姓名1],物料员编号,c.员工姓名 [姓名2] from @a a Inner Join @b b On a.采购员编号=b.员工编号 Inner Join @b c On a.物料员编号=c.员工编号
      

  2.   

    select a.物料号,a.采购员编号,b.员工姓名,a.物料员编号,c.员工姓名
    from    table1 a
    left join table2 b on a.采购员编号 = b.员工编号
    left join table2 c on a.物料员编号 = c.员工编号
      

  3.   

    如果你用的SQL Server。可以如下写:
    select a.物料号,a.采购员编号,b.员工姓名,a.物料员编号,c.员工姓名
    from table1 a,table2 b
    a.采购员编号 *= b.员工编号
      

  4.   

    select a.物料号,a.采购员编号,b.员工姓名,a.物料员编号,c.员工姓名
    from    table1 a
    left join table2 b on a.采购员编号 = b.员工编号
    left join table2 c on a.物料员编号 = c.员工编号不管在table2中有没有找合适的记录,table1中的记录都会显示,但找不到的情况下,相应的字段为空如果改为select a.物料号,a.采购员编号,b.员工姓名,a.物料员编号,c.员工姓名
    from    table1 a
    inner join table2 b on a.采购员编号 = b.员工编号
    inner join table2 c on a.物料员编号 = c.员工编号就变成,只有找到的,才显示了,如果找不到,就不显示。
      

  5.   

    select table1.物料号, table1.采购员编号, table2.员工姓名, table1.物料员编号, table3.员工姓名
    from table1 left join table2 on table1.采购员编号 = table2.员工编号
         left join table2 as table3 on table1.物料员编号 = table3.员工编号
      

  6.   

    select a.物料号,a.采购员编号,b.员工姓名,a.物料员编号,c.员工姓名
    from table1 a inner join table2 b on a.采购员编号 *= b.员工编号