表达能力太差了我觉得楼主说他 用left join 得到的结果是 zkzh bdbj ... qsh ... ... ... NULL用right join 得到的结果是 zkzh bdbj ... qsh NULL NULL NULL 100他想得到 zkzh bdbj ... qsh ... ... ... 100描述完问题了,我觉得这样的结果说明你的条件 on bjqsch.xh=a.xh 是不合理的 所以你改成: select a.zkzh, a.bdbj,a.xydm,a.zydm,a.bjdm, a.xm,a.bdzh,a.xh,a.lxdh,a.bmmc,a.zymc,bjqsch.qsh from (select xsxxb.zkzh, xsxxb.bdbj,xsxxb.xydm,xsxxb.zydm,xsxxb.bjdm, xsxxb.xm,xsxxb.bdzh,xsxxb.xh,xsxxb.lxdh,bmb.bmmc,zyb.zymc from xsxxb,bmb,zyb where xsxxb.zydm=zyb.zydm and xsxxb.xydm=bmb.bmdm and xsxxb.xh='200405006110') a cross join bjqsch看看对不对? (不知道你是否只返回一条记录)
结早了, select a.zkzh, a.bdbj,a.xydm,a.zydm,a.bjdm, a.xm,a.bdzh,a.xh,a.lxdh,a.bmmc,a.zymc,bjqsch.qsh from (select xsxxb.zkzh, xsxxb.bdbj,xsxxb.xydm,xsxxb.zydm,xsxxb.bjdm, xsxxb.xm,xsxxb.bdzh,xsxxb.xh,xsxxb.lxdh,bmb.bmmc,zyb.zymc from xsxxb,bmb,zyb where xsxxb.zydm=zyb.zydm and xsxxb.xydm=bmb.bmdm and xsxxb.xh='200405006110') a cross join bjqsch 是正确的,不过 我换个学号qsh还是10,应该是null的. 你这个语句是不是无论哪个学号,qsh都是10啊,晕.
所以+的话,其中任何一个值是NULL,整个结果都是NULL
解决的方法是用类似下面的方法处理:
isnull(字段,0)+100
用left join 得到的结果是
zkzh bdbj ... qsh
... ... ... NULL用right join 得到的结果是
zkzh bdbj ... qsh
NULL NULL NULL 100他想得到
zkzh bdbj ... qsh
... ... ... 100描述完问题了,我觉得这样的结果说明你的条件
on bjqsch.xh=a.xh
是不合理的
所以你改成:
select a.zkzh, a.bdbj,a.xydm,a.zydm,a.bjdm, a.xm,a.bdzh,a.xh,a.lxdh,a.bmmc,a.zymc,bjqsch.qsh from (select xsxxb.zkzh, xsxxb.bdbj,xsxxb.xydm,xsxxb.zydm,xsxxb.bjdm, xsxxb.xm,xsxxb.bdzh,xsxxb.xh,xsxxb.lxdh,bmb.bmmc,zyb.zymc from xsxxb,bmb,zyb where xsxxb.zydm=zyb.zydm and xsxxb.xydm=bmb.bmdm and xsxxb.xh='200405006110') a cross join bjqsch看看对不对?
(不知道你是否只返回一条记录)
select a.zkzh, a.bdbj,a.xydm,a.zydm,a.bjdm, a.xm,a.bdzh,a.xh,a.lxdh,a.bmmc,a.zymc,bjqsch.qsh from (select xsxxb.zkzh, xsxxb.bdbj,xsxxb.xydm,xsxxb.zydm,xsxxb.bjdm, xsxxb.xm,xsxxb.bdzh,xsxxb.xh,xsxxb.lxdh,bmb.bmmc,zyb.zymc from xsxxb,bmb,zyb where xsxxb.zydm=zyb.zydm and xsxxb.xydm=bmb.bmdm and xsxxb.xh='200405006110') a cross join bjqsch
是正确的,不过
我换个学号qsh还是10,应该是null的.
你这个语句是不是无论哪个学号,qsh都是10啊,晕.