日期:2014-05-17  浏览次数:20489 次

多表结合查询请教
本帖最后由 ldjssoft 于 2014-01-14 23:43:24 编辑

select a.*,ISNULL(b.YfLxMoeny ,0) AS YfLxMoeny from CkInfo as a left join 
(Select x_KxPzh,YfLxMoeny From CkLxInfo Group by x_KxPzh) 
as b on a.Pzh=b.x_KxPzh where a.shenhe=1



请问上面的代码,我还要加个下面条件,应该如何加呢?

还有个login表,表中有czyName(操作员)字段,bmName(部门)字段
如果通过判断CkInfo中的LrCzyName字段(也是操作员),让上面的代码只显示指定部门的信息,比如已知部门为“业务部”。

------解决方案--------------------
这样吗?
SELECT  a.* ,
        ISNULL(b.YfLxMoeny, 0) AS YfLxMoeny,c.bmName
FROM    CkInfo AS a
        LEFT JOIN ( SELECT  x_KxPzh ,
                            YfLxMoeny
                    FROM    CkLxInfo
                    GROUP BY x_KxPzh
                  ) AS b ON a.Pzh = b.x_KxPzh
LEFT JOIN [LOGIN] c ON a.czyName=c.czyName
WHERE   a.shenhe = 1 AND c.bmName='业务部'

------解决方案--------------------

使用left join 语法关联即可,比如, 并不建议使用czyName来关联使用code会好些...
select t.*,l.*
from (
select a.*,ISNULL(b.YfLxMoeny ,0) AS YfLxMoeny from CkInfo as a left join 
(Select x_KxPzh,YfLxMoeny From CkLxInfo Group by x_KxPzh) 
as b on a.Pzh=b.x_KxPzh where a.shenhe=1) t left join login l
on t.czyName = l.czyName

------解决方案--------------------

Select x_KxPzh,YfLxMoeny 
  From CkLxInfo 
  Group by x_KxPzh

LZ的原语句有问题吧? 子查询的这句应该是无法执行的.