本帖最后由 xiongmzh 于 2010-08-07 13:49:13 编辑

解决方案 »

  1.   

    这个很显然啊你的一个a.id对应了8个b.id(张三)你的A表里对应B表的那条张三的记录有8条符合条件的所以总和就大了8倍 
      

  2.   

    select a.col1,a.col2 ,c
    from (
    select b.*,sum(b.sid*b.bid) as c from ccc as b where b.name='张三'
    ) b join ddd a on b.id=a.id 
    你用这个语句可以实现你的需求~
      

  3.   

    当然啦 
    你这样的语句可能会出现重复 你可以加个DISTINCT select distinct a.col1,a.col2 ,c
    from (
    select b.*,sum(b.sid*b.bid) as c from ccc as b where b.name='张三'
    ) b join ddd a on b.id=a.id