SELECT (SUM(BT.[JiFen])/COUNT(BC.DESN)+SUM(BC.[JiFen])) AS [JiFen] FROM [BBSTitle] AS BT INNER JOIN [BBSCONTENT] AS BC ON BC.[UserName] = BT.[UserName] WHERE (BC.[UserName] = @UserName)这句话球出的和是错的,例如BT的表:
JIFEN Name
0.03  aa
0.03  aa
0.03  aaBC的表是:
JIFEN   Name
0.005  aa
我要把这两个表的JIFEN加起来,但用上面语句却得出0.105 ,结果是错的,那语句应怎么写?

解决方案 »

  1.   

    你给的示例数据跟你语句中需要的字段不符合(缺少某些关健字段)所以我没法把语句给你.我只能告诉你inner join 不是一对一,可能一对多,也可能多对多,所以连接后的结果行总是不小于被连接的两(或多个)个表中行数最大的一个表的行数.比如
    ta
    id
    1
    1
    1
    2
    2
    tb
    id
    1
    1
    2
    2
    2
    2
    那么inner join出来就有很多条记录在连接之后再聚合,肯定是错的.通常的做法是先各自聚合再连接. 当然,具体的写法要根具你的要求.
      

  2.   

    要求是这样的:把当前用户即aa用户的JIFEN统计出来,这个JIFEN分别在两个表:BC和BT。
      

  3.   

    以上语句中的UserName即数据库中的Name,上面是写错了。
      

  4.   

    (SELECT SUM(BT.[JiFen]) FROM [BBSTitle] BT WHERE (BT.[USERNAME]=@UserName))+ (SELECT SUM(BC.[JiFen]) AS [BCJiFen] FROM [BBSContent] BC WHERE (BC.[USERNAME]=@UserName))
    那要这样子写?运行不了啊。
      

  5.   

    如果两张表的结构完全一样那么
    我的数据是:
    BT表:
    jifen   Name
    0.03 aa        
    0.03 aa        
    0.03 aa        
    0.03 aa        
    0.03 aa        
    0.03 aa
      
    BC表:
    jifen   Name
    0.05 bb        
    0.05 aa  
             
    select t.name [Name],sum(t.jifen) [总积分] from
    (select * from BC union all select * from BT) t group by t.name
    一句话搞定. 楼主想要的是这个答案吗???