select a.id ID,a.building BuildingID,a.sumroomarea*b.areaprice TotalPrice from
(
  select id,buildingid,sum(roomarea) sumroomarea from buildinfo
) a,areaprice b
where a.id=b.id and a.buildingid=b.buildingid

解决方案 »

  1.   


    ORARichard(没钱的日子......)的思路正确,但有一个小失误!!
    select a.id ID,a.buildingid BuildingID,a.sumroomarea*b.areaprice TotalPrice from
    (
      select id,buildingid,sum(roomarea) sumroomarea from buildinfo
    ) a,areaprice b
    where a.id=b.id and a.buildingid=b.buildingid
      

  2.   

    ORARichard(没钱的日子......) 
    有个问题,最后查出的结构显示谁的id呢?你看一下他的两个表的id,这样做即使查出来也不会出现期望的结果的。
      

  3.   

    觉得id号应该是不用关联的吧,直接用b表的id,
    select b.id ID,b.buildingid BuildingID,a.sumroomarea*b.areaprice TotalPrice from
    (
      select sum(roomarea) sumroomarea from buildinfo
    ) a,areaprice b
    where a.buildingid=b.buildingid
    看需求应该就是要计算出某楼的totalprice
      

  4.   

    他的id,其实都是一个序列,
    她想得到的结果,应该也是以B表作主表的。不能用id来作关联。应该用BuildingID。同意 bisliu(努力学习oracle!) 的想法。
      

  5.   

    同意大家的观点,前面确实没注意那么多,改一下。select rownum ID,b.buildingid BuildingID,nvl(a.sumroomarea*b.areaprice,0) TotalPrice from
    (
      select buildingid,sum(roomarea) sumroomarea from buildinfo
        group by buildingid
    ) a,areaprice b
    where a.buildingid(+)=b.buildingid
      

  6.   

    同意的 ORARichard(没钱的日子......)  的写法,
    不过 rownum ID 应变成 b.ID 有点意义
      

  7.   

    select rownum ID,b.buildingid BuildingID,nvl(a.sumroomarea*b.areaprice,0) TotalPrice from
    (
      select buildingid,sum(roomarea) sumroomarea from buildinfo
        group by buildingid
    ) a,areaprice b
    where a.buildingid(+)=b.buildingidorder by b.buildingid
      

  8.   

    谢谢大家了,可是我想问的是在Access数据库中建立的查询,大家的方法我都试了,都不能符合我的要求,谁可以再帮帮忙啊?我需要Access的。Access中好像不支持(+)=和nvL函数啊。。
      

  9.   

    你怎么不早说啊,真是的。select b.id,b.buildingid,isnull(a.sumroomarea*b.areaprice) as TotalPrice from
    (
      select buildingid,sum(roomarea) sumroomarea from buildinfo
        group by buildingid
    ) a
    right join areaprice b
    on a.buildingid=b.buildingid