表中记录是另一个表的表名,如何联合查询?

麻酱面条 2011-12-13 02:44:49
建了表A:
编号 字段 表名 说明 唯一码
1 ccc B B表 guid1
2 ddd C C表 guid2
。。。。
其中表B和表C里面的字段是不一样的,它们和表A里面的记录关联靠的是唯一码。比如表B:
唯一码 字段1 字段2
guid1 aaa bbb
我想要的效果就是,比如选择表B,它会把表A的内容取过来:
唯一码 字段 字段1 字段2
guid1 ccc aaa bbb

E71发帖,请帮忙。
...全文
79 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
麻酱面条 2011-12-14
  • 打赏
  • 举报
回复
补充说明一下,我在表A中查询一条记录,才会知道剩下的参数是在表B或表C或其他表,其他表的表名是存储在表A中的每一条记录里面的,每一条记录可能关联的表都不同,这个怎么办?
唐诗三百首 2011-12-14
  • 打赏
  • 举报
回复

create table 表A
(编号 int, 字段 varchar(6), 表名 varchar(6), 说明 varchar(6), 唯一码 varchar(6))

insert into 表A
select 1, 'ccc', 'B', 'B表', 'guid1' union all
select 2, 'ddd', 'C', 'C表', 'guid2'

create table 表B(唯一码 varchar(6), 字段1 varchar(6), 字段2 varchar(6))

insert into 表B
select 'guid1', 'aaa', 'bbb'


declare @tab varchar(10),@sql varchar(2000)

select @tab=表名 from 表A where 编号=1 -- 表A的筛选条件可自定义

select @sql='select b.唯一码,a.字段,b.字段1,b.字段2 from 表'+@tab+' b inner join 表A a on a.唯一码=b.唯一码'

exec(@sql)


唯一码 字段 字段1 字段2
------ ------ ------ ------
guid1 ccc aaa bbb

(1 row(s) affected)
美到心痛 2011-12-14
  • 打赏
  • 举报
回复
感覺要用動態語句了~
pengxuan 2011-12-13
  • 打赏
  • 举报
回复

if object_id('a') is not null
drop table a
go
create table a
(
编号 int,
字段 varchar(10),
表名 varchar(10),
说明 varchar(10),
唯一码 varchar(10)
)
go
insert into a
select 1,'ccc','B','B表','guid1' union all
select 2,'ddd','C','C表','guid2'
go
if object_id('b') is not null
drop table b
go
create table b
(
唯一码 varchar(10),
字段1 varchar(10),
字段2 varchar(10)
)
go
insert into b
select 'guid1','aaa','bbb'
go
--使用inner join 内联接关联两个表进行查询
select b.唯一码,a.字段,b.字段1,b.字段2 from b inner join a on b.唯一码=a.唯一码
go
/*
唯一码 字段 字段1 字段2
---------- ---------- ---------- ----------
guid1 ccc aaa bbb

(1 行受影响)

*/
唐诗三百首 2011-12-13
  • 打赏
  • 举报
回复

create table 表A
(编号 int, 字段 varchar(6), 表名 varchar(6), 说明 varchar(6), 唯一码 varchar(6))

insert into 表A
select 1, 'ccc', 'B', 'B表', 'guid1' union all
select 2, 'ddd', 'C', 'C表', 'guid2'

create table 表B(唯一码 varchar(6), 字段1 varchar(6), 字段2 varchar(6))

insert into 表B
select 'guid1', 'aaa', 'bbb'


select b.唯一码,a.字段,b.字段1,b.字段2
from 表B b
inner join 表A a
on a.唯一码=b.唯一码 and a.表名='B'


唯一码 字段 字段1 字段2
------ ------ ------ ------
guid1 ccc aaa bbb

(1 row(s) affected)
--小F-- 2011-12-13
  • 打赏
  • 举报
回复
select a.唯一码,a.编号 as 字段,b。字段1,b.字段2from a join b on a.唯一码=b.唯一码

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧