请教一个简单的SQL语句写法,谢谢~
A表:   
 发出地         接收地 
 南京               上海 
 上海               北京 
    .                        . 
    .                        . 
    .                        .   
 b表 
 1         上海 
 2         南京 
 3         北京     
 现在要显示:   
 发出地         接收地 
 2               1 
 1               3 
    .         . 
    .         . 
    .         .
------解决方案--------------------select B.地区ID AS 发出地,C.地区ID AS 接收地 
 FROM A表 A LEFT JOIN b表 B ON A.发出地=B.地名 
  LEFT JOIN b表 C ON A.接收地=C.地名
------解决方案--------------------update table1 set 发出地=b.id from table2 b  where 发出地=b.地区 
 update table1 set 接收地=b.id from table2 b  where 接收地=b.地区 
 select  * from table1 
------解决方案--------------------create table A(发出地   nvarchar(10), 接收地 nvarchar(10)) 
 insert A select  '南京 ',      '上海 ' 
 union all select  '上海 ',      '北京 '   
 create table B(id int, col nvarchar(10)) 
 insert B select 1,    '上海 ' 
 union all select 2,    '南京 ' 
 union all select 3,    '北京 '   
 select 发出地=tmpA.id, 接收地=tmpB.id from A 
 left join B as tmpA  on A.发出地=tmpA.col 
 left join B as tmpB on A.接收地=tmpB.col    
 --result 
 发出地         接收地          
 ----------- -----------  
 2           1 
 1           3   
 (2 row(s) affected)
------解决方案--------------------select (select id from b表 where name = a.发出地)  '发出地 ', (select id from b表 where name = a.接收地)  '接收地 '  from A表
------解决方案--------------------select t1.id as 发出地 , t2.id as 接收地 
 from a inner join b t1 on a.发出地 = t1.名称 
        inner join b t2 on a.接收地 = t2.名称 
------解决方案----------------------使用自定义函数 
 create table a(出发地 varchar(10),接收地 varchar(10)) 
 insert into a  
 select  '北京 ', '南京 ' 
 union all select  '南京 ', '上海 ' 
 union all select  '上海 ', '北京 ' 
 go 
 create table b(id int ,name varchar(10)) 
 insert into b  
 select 1 ,  '上海 ' 
 union all select 
 2,    '南京 ' 
 union all select 
 3   , '北京 ' 
 go 
 create function getid(@name varchar(10)) 
 returns int 
 as 
 begin 
 declare @id int  
 select @id=id from b where name=@name 
 return @id 
 end 
 go 
 select dbo.getid(出发地) as 出发地,dbo.getid(接收地) as 接收地 from a   
 drop function getid 
 drop table a 
 drop table b   
 --结果 
 出发地  接收地 
 3	2 
 2	1 
 1	3