首页 新闻 会员 周边 捐助

请教一个简单的SQL语句……

0
悬赏园豆:10 [已解决问题] 解决于 2013-01-26 16:24

create table a(id int,name nvarchar(1))
insert a values(1,N'A')
insert a values(2,N'B')
insert a values(3,N'C')
create table b(id int,id1 int ,id2 int)

insert b values(1,2,3)

 

现在,想把b表中的1,2,3换成A表对应的name显示出来,最简单的SQL语句怎么写?

 

PS:SqlServer2008

hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2012-11-12 11:25
< >
分享
最佳答案
0
create table #a(id int,name nvarchar(1))
insert #a values(1,N'A')
insert #a values(2,N'B')
insert #a values(3,N'C')
create table #b(id int,id1 int ,id2 int)

insert #b values(1,2,3)
 

SELECT a.name,a1.name ,a2.name FROM #b b INNER JOIN #a a ON a.id = b.id
INNER JOIN #a a1 ON a1.id = b.id1
INNER JOIN #a a2 ON a2.id = b.id2


DROP TABLE #a
DROP TABLE #b

 


            
收获园豆:4
acepro | 小虾三级 |园豆:1218 | 2012-11-13 09:16
其他回答(6)
1
create table #a(id int,name nvarchar(1))
insert #a values(1,N'A')
insert #a values(2,N'B')
insert #a values(3,N'C')
create table #b(id int,id1 int ,id2 int)

insert #b values(1,2,3)
 

select *
from
(
    select * 
    from #b unpivot(value for ids in (id,id1,id2)) as vpt
) as a  inner join #a b on a.value=b.id
收获园豆:3
Barton | 园豆:214 (菜鸟二级) | 2012-11-12 11:43

行转列pivot和unpiovt真是个利器,顶你

改成这样就完美了

select ids,name
from
(
    select * 
    from b unpivot(value for ids in (id,id1,id2)) as vpt
) as a  inner join a b on a.value=b.id
支持(0) 反对(0) oppoic | 园豆:770 (小虾三级) | 2012-11-13 09:17

@心态要好: 
行专列出来的结果是 

id   A

id1 B
id2 C
你说的 “b表中的1,2,3换成A表对应的name显示出来” 理解成了
结果  A B  C

回答问题理解有误差了,囧。。。。。。

支持(0) 反对(0) acepro | 园豆:1218 (小虾三级) | 2012-11-13 09:37
0

仅供参考 我这sql挺没水平的,等高人吧,楼主还是放些分比容容易吸引高手

select id=(select name from a where a.id=b.id)
,id1=(select name from a where a.id=b.id1)
,id2=(select name from a where a.id=b.id2)
from b
收获园豆:2
oppoic | 园豆:770 (小虾三级) | 2012-11-12 11:46
0

mark

ms_water | 园豆:510 (小虾三级) | 2012-11-12 13:23
0

现实场景到底是怎么样的呢?如果列不多,直接多个表连接吧

飞来飞去 | 园豆:2057 (老鸟四级) | 2012-11-12 14:59
0

select _a.name from a as _a inner join b as _b on _b.id = _a.id

kimyyo | 园豆:240 (菜鸟二级) | 2012-11-12 18:00
0

试试我这个,效率高,而且简单:

1 SELECT (SELECT C_NAME FROM T_A WHERE ID = B.ID) N1,
2 (SELECT C_NAME FROM A WHERE ID = B.C_ID1) N2,
3 (SELECT C_NAME FROM A WHERE ID = B.C_ID2) N3
4 FROM  B


欢迎讨论!

收获园豆:1
jone_e | 园豆:1410 (小虾三级) | 2012-11-18 15:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册