关于数据查询产生笛卡儿积的

miskmat 2006-03-15 05:44:44
select
[基本信息|姓名]=BL.xm,
科室=KS.MC,
住院日=CWS.CWR,
[基本信息|住院号]=bl.zyh,
总费用=FYDETAIL.FY,
住院费=FYDETAIL1.FY,
西药费=FYDETAIL2.FY
from ZY_bl as bl LEFT join ZY_bh0 as bh on bh.zyh=bl.zyh
LEFT JOIN ZY_BHBH AS BHBH ON BHBH.BHID=BH.BHID AND BHBH.STATE=255
LEFT JOIN (SELECT CWR=SUM(B1.JSRQ-B1.KSRQ),B1.BHID FROM ZY_BHBH AS B1 WHERE STATE!=1 GROUP BY BHID ) AS CWS ON CWS.BHID=BHBH.BHID
LEFT JOIN ZD_KS AS KS ON BHBH.KSBM=KS.BM
LEFT JOIN ZY_FYMASTER AS MASTER ON MASTER.BHID=BH.BHID
LEFT JOIN ZY_FYDETAIL AS FYDETAIL ON FYDETAIL.SFID=MASTER.SFID AND FYDETAIL.HSFF=6 AND FYLB=1
LEFT JOIN ZY_FYDETAIL AS FYDETAIL1 ON FYDETAIL1.SFID=MASTER.SFID AND FYDETAIL1.HSFF=0 AND FYDETAIL1.FYLB=2
LEFT JOIN ZY_FYDETAIL AS FYDETAIL2 ON FYDETAIL2.SFID=MASTER.SFID AND FYDETAIL2.HSFF=0 AND FYDETAIL2.FYLB=4
where bl.state=0 and master.bhid!='' and fydetail.fy>=0 order by bl.zyh



该语句执行后产生了4条重复的记录 ,最终结果需要只显示一行...
语句完成的功能是,在主表里提取一条记录,然后在子表中取很多条记录,将子表着主表查询出来显示成一条记录显示出来.上面的语句运行了后子表中有多少条,查询出来就有+1条记录.(子表中*主表中的)
需要将查询出来的结果显示成一条.


大家提出更好的方法写,出来.



...全文
63 点赞 收藏 回复
写回复
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-03-15 05:44
社区公告
暂无公告