日期:2014-05-18  浏览次数:20498 次

在线等,解决一定给分,求一sql语句....
现在有两张表   ,表A     表B
表A结构如下:
表A(字段id是表A的主键)
id         text
---------------
001       AAA
002       BBB

表B结构如下:
表A(字段autoid是表B的主键,id1和id2都是关联到表A中字段id的外键)
autoid       id1       id2
------------------
1                 001       002

也就是说表B的字段 "id1 "和 "id2 "分别都引用表A中的主键字段 "id "
我想查询出结果是:
auotid   id1       id2    
-----------------
1             AAA       BBB
请问这样的sql语句怎么写?

------解决方案--------------------
create table A(id varchar(10), [text] varchar(10))
insert A select '001 ', 'AAA '
union all select '002 ', 'BBB '

create table B(autoid int, id1 varchar(10), id2 varchar(10))
insert B select 1, '001 ', '002 '

select B.autoid, tmp1.[text] as id1, tmp2.[text] as id2
from B
left join A tmp1 on B.id1=tmp1.id
left join A tmp2 on B.id2=tmp2.id

--result
autoid id1 id2
----------- ---------- ----------
1 AAA BBB

(1 row(s) affected)
------解决方案--------------------
--关联两次A,分别起别名即可,因为有外键关系,用inner join即可。

select
B.autoid,
T1.[text] as id1,
T2.[text] as id2
from B
inner join A T1 on B.id1 = T1.id
inner join A T2 on B.id2 = T2.id