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

一个多表关联查询的麻烦问题~~谢谢
相关表:
tb_shenpi:
  表单编号(其他字段省略)
  DBD20070111001
  LLD20070111001
  BFD20070111001
......

tb_BianMa:
  ID     TabNam
DBD     tb_DiaoBoDan
LLD     tb_LianLuoDan
BFD     tb_BaoFeiDan
......

具体表:
tb_DiaoBoDan:
表单编号                   状态
DBD20070111001       已通过
......

tb_LianLuoDan
表单编号                   状态
LLD20070111001       在审
......

tb_BaoFeiDan
表单编号                   状态
BFD20070111001       未通过
......

期望结果:
表单编号                       状态
  DBD20070111001         已通过
  LLD20070111001         在审
  BFD20070111001         未通过

不只这三种会有很多种单据形式!!!!!!



------解决方案--------------------
select b.* from tb_shenpi a,tb_DiaoBoDan b
union all
select b.* from tb_shenpi a,tb_LianLuoDan b
union all
select b.* from tb_shenpi a,tb_BaoFeiDan b
------解决方案--------------------
楼上正确,不需要第二个表.
------解决方案--------------------
declare @sql varchar(8000)
set @sql= ' '

select @sql=@sql+ ' select 表单编号,状态 from '+TabNam+ ' union all '
from tb_BianMa

set @sql=left(@sql,len(@sql)-len( ' union all '))
exec(@sql)