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

关于关联表之间的问题
假设现在有三张表:
p_Project(项目信息表) p_Building(楼栋信息表) p_Room(房间信息表)
关系大家应该都懂
现在我要查询p_Room表的信息,按照实际业务来看应该怎么去关联

SELECT  *
FROM    dbo.p_Room r
        INNER JOIN dbo.p_Building b ON b.BldGUID = r.BldGUID
        INNER JOIN dbo.p_Project p ON b.ProjGUID = p.ProjGUID
        
SELECT  *
FROM    dbo.p_Project p
        INNER JOIN dbo.p_Building b ON b.ProjGUID=p.ProjGUID
        INNER JOIN dbo.p_Room r ON r.BldGUID = b.BldGUID

这两种哪种更符合业务逻辑,避免后期更多关联是出现数据不准确情况
sql

------解决方案--------------------
引用:
Quote: 引用:

因为B表的a列重复了,可能需要把B作为子查询得出数据集之后再sum

会不会是因为B表先是和A表关联,然后又和C表关联,所以累计求和了两次啊?


对,有重复记录,那么会关联2次,于是直接求sum,就会得到重复值,所以偏大了。
------解决方案--------------------
引用:
Quote: 引用:

因为B表的a列重复了,可能需要把B作为子查询得出数据集之后再sum

会不会是因为B表先是和A表关联,然后又和C表关联,所以累计求和了两次啊?
是的,所以我说可能要考虑用子查询来去重再关联再计算