表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