解决方案 »

  1.   

    其实从现在的2中写法来看,是等价的。如果是要查询p_Room表的信息,那么第一种,更加直观一点
      

  2.   

    一对多的关系首先你要研究,当真的一对多出现时,取哪些列?因为一对多出现“重复数据”是合理的,比如:
    A表
    a b 
    1 2 
    2 3 B
    a b
    1 2
    1 3
    2 1
    那么select * from a inner join b on a.a=b.a是,出现多条数据很合理,问题是你业务上如何要求这些数据
      

  3.   

    我的意思是你可以出现N个结果集,一般来说你的业务不太会查询所有房间的信息。如果是根据条件查询的话。就写三条查询语句分别显示 p_Project(项目信息表) p_Building(楼栋信息表) p_Room(房间信息表)的信息。这样的话才比较符合逻辑。
      

  4.   

    我出现过这样的情况:
    是三张表:
    A表
    a  
    1  
    2  B
    a b
    1 2
    1 3
    2 1C


    2 select sum(b.b) from A as a inner join B b on a.a=b.a inner join C c on c.a=a.a
    这样写的话,好像就会不准确,应该是重复求和了几次,不明白怎么回事
      

  5.   

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

  6.   

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

  7.   

    会不会是因为B表先是和A表关联,然后又和C表关联,所以累计求和了两次啊?对,有重复记录,那么会关联2次,于是直接求sum,就会得到重复值,所以偏大了。
      

  8.   

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