SQL2008,四张表mlf、bmsz、bmdh、bmgsd,当后三张表中的指定列=mlf指定列时,只用一组语句就把后三张表的关联列代入
oiph 2011-12-22 09:48:34 当mlf.dfhm=bmdh.dh,把bmdh的xm列代入到mlf表中,当mlf.jzh4=bmsz.jzh4 and mlf.thd=bmsz.dz,把bmsz的jzm列代入到mlf表中,当mlf.dh07=bmgsd.dh07,把bmgsd的gsd列代入到mlf表中。(不相等时对应的列为空)
我自己只懂分三步逐一代入的方法,目前我使用下面的语句,想提高效率整合为用一组语句,请求指点。
1 代入xm
create view mlfa as
select dfhm,xm,thd,jzh4,dh07
from mlf left outer join bmdh
on mlf.dfhm=bmdh.dh
2 代入jzm
create view mlfb as
select dfhm,xm,thd,jzh4,jzm,dh07
from mlfa left outer join bmsz
on mlfa.jzh4=bmsz.jzh4 and thd=bmsz.dz
3 代入gsd
create view mlfb1 as
select dfhm,xm,thd,jzh4,jzm,dh07,gsd
from mlfb left outer join bmgsd
on mlfb.dh07=bmgsd.dh07
原表mlf如下(列名dfhm,thd,jzh4,dh07)
------dfhm -thd -jzh4 --dh07
13011112222 871 2032 1301111
13600007777 874 1395 1360000
15988881111 010 1485 1598888
原表bmdh如下(列名dh,xm)
---------dh --xm
13011112222 张三
13025112035 张风
15988881111 李四
原表bmsz如下(列名dz,jzh4,jzm)
-dz jzh4 jzm
010 1485 西山
871 2032 东风
563 1182 赵庄
原表bmgsd如下(列名dh07,gsd)
---dh07 gsd
1360000 上海
1300001 学校
1301111 湘江
现在想达成的表的结果
------dfhm -thd -jzh4 --dh07 --xm jzm gsd
13011112222 871 2032 1301111 张三 东风 湘江
13600007777 874 1395 1360000 -- -- 上海
15988881111 010 1485 1598888 李四 西山