+ -
当前位置:首页 → 问答吧 → 表中记录是另一个表的表名,如何联合查询?

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

时间:2011-12-13

来源:互联网

建了表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发帖,请帮忙。

作者: sirit   发布时间: 2011-12-13

select a.唯一码,a.编号 as 字段,b。字段1,b.字段2from a join b on a.唯一码=b.唯一码

作者: fredrickhu   发布时间: 2011-12-13

SQL code

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)

作者: ap0405140   发布时间: 2011-12-13

SQL code

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 行受影响)

*/

作者: pengxuan   发布时间: 2011-12-13