select name,
  (select areaname from b where a.area1=areacode) areaname1,
  (select areaname from b where a.area2=areacode) areaname2
from a

解决方案 »

  1.   

    SELECT B1.areaname AS area1,B2.areaname AS area2,name
    FROM A,B B1,B B2
    WHERE A.area1=B1.areacode
    AND A.area2=B2.areacode
      

  2.   

    select areaname1=b1.areaname
    ,areaname2=b2.areaname
    ,a.name
    from a表 a
    left join b表 b1 on a.area1=b1.areacode
    left join b表 b2 on a.area2=b2.areacode
    where 条件.....
      

  3.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[temp_a]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[temp_a]if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[temp_b]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[temp_b]create table temp_a(area1 varchar(20) null ,area2 varchar(20)  null,name varchar(10) null)create table temp_b(areacode varchar(20) not  null ,areaname varchar(20)  null,primary key(areacode))
    goinsert into temp_a
    select 'A001','A002','張三' union all
    select 'A001','A003','張華' union all
    select 'B001','B002','李明' union all
    select 'B001','B004','王志軍' union all
    select 'A001','B002','劉志憲' 
    goselect * from temp_a
    /*
    area1    area2    name
    A001 A002 張三
    A001 A003 張華
    B001 B002 李明
    B001 B004 王志軍
    A001 B002 劉志憲*/insert into temp_b
    select 'A001','北京' union
    select 'A002','上海' union
    select 'A003','天津' union
    select 'B001','廣州' union
    select 'B002','武漢' union
    select 'B003','南京' union
    select 'C001','昆明' union
    select 'C002','南昌' union
    select 'C003','長沙' select * from temp_b
    /*
    areacode areaname
    A001 北京
    A002 上海
    A003 天津
    B001 廣州
    B002 武漢
    B003 南京
    C001 昆明
    C002 南昌
    C003 長沙*/----------地址條件完全符合才顯示-------
    select a.name as 姓名,b.areaname as 地址1,c.areaname as 地址2 from temp_a a  join temp_b b on a.area1=b.areacode join temp_b c on  a.area2=c.areacode
    /*
    姓名      地址1    地址2
    張三 北京 上海
    張華 北京 天津
    李明 廣州 武漢
    劉志憲 北京 武漢
    */
    ----------地址條件不符合也顯示-------
    select a.name as 姓名,b.areaname as 地址1,c.areaname as 地址2 from temp_a a  left join temp_b b on a.area1=b.areacode left join temp_b c on  a.area2=c.areacode
    /*
    姓名      地址1    地址2
    張三 北京 上海
    張華 北京 天津
    李明 廣州 武漢
    王志軍 廣州 NULL
    劉志憲 北京 武漢*/