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

表A中多个字段的内容有表B查询得到,如何写SQL语句?
表A:
字段:name1   name2   name3
内容:A           B             C

表B:
字段:id   name
内容:A     张三
            B     李四
            C     王二

如何写SQL语句使表A对应的DBGrid显示的是
张三   李四   王二
这样的结果?

   


------解决方案--------------------
Select
B.name As name1,
C.name As name2,
D.name As name3
From
A
Left Join
B
On A.name1 = B.id
Left Join
C
On A.name2 = C.id
Left Join
D
On A.name3 = D.id
------解决方案--------------------
declare @t1 table(name1 char(1),name2 char(1),name3 char(1))
declare @t2 table([id] char(1),[name] varchar(20))
insert into @t1
select 'A ', 'B ', 'C '
insert into @t2
select 'A ', '张三 '
union all select 'B ', '李四 '
union all select 'C ', '王二 '

select (select [name]from @t2 where [id]=a.name1)as name1,
(select [name]from @t2 where [id]=a.name2)as name2,
(select [name]from @t2 where [id]=a.name3)as name3
from @t1 a

/*结果
name1 name2 name3
-------------------- -------------------- --------------------
张三 李四 王二
*/
------解决方案--------------------
我的錯了點,要改下


Select
B.name As name1,
C.name As name2,
D.name As name3
From
A
Left Join
B
On A.name1 = B.id
Left Join
B C
On A.name2 = C.id
Left Join
B D
On A.name3 = D.id
------解决方案--------------------
不過不建議使用你那種子查詢的方式,可以直接關聯的嘛。 :)
------解决方案--------------------
sirit(兽性大发的小白兔) ( ) 信誉:100 2007-08-17 20:08:38 得分: 0


A中的name在B中是一定存在的,使用关联是什么意思?
需要改动数据库吗?
我没法动数据库的,只能做个客户端连接数据库。


--------------------
暈倒,不用改動數據庫的。

如果A中的name在B中是一定存在的,可以這麼寫,這就是關聯的寫法。

Select
B.name As name1,
C.name As name2,
D.name As name3
From
A
Inner Join
B
On A.name1 = B.id
Inner Join
B C
On A.name2 = C.id
Inner Join
B D
On A.name3 = D.id