表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