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

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条记录.(子表中*主表中的)
需要将查询出来的结果显示成一条.


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



...全文
94 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧