计算字段的总和

问题描述

| 我有两个表: 表1(a,b,c) 表2(a,d,f) 我想为每个b得到对应的d和f的乘积之和 表1数据
a   b      c
-------------
1   hello  3
2   bye    4
表2数据
a  d  f
--------
1  5  3
1  2  4
2  1  3
2  2  3
结果:hello:5 * 3 + 2 * 4,bye:1 * 3 + 2 * 3 我的查询是:
  SELECT t1.a,t2.d * t2.f AS m,SUM(m)   
    FROM table1 AS t1,table2 AS t2 
   WHERE t1.a = t2.a 
GROUP BY t1.b
那么,这里出了什么问题?在MysqL中,我得到#1054-“字段列表”中的未知列“ m”     

解决方法

尝试:
SELECT t1.a,t2.d*t2.f AS m,SUM(t2.d*t2.f)
FROM table1 AS t1,table2 AS t2 
WHERE t1.a=t2.a GROUP BY t1.b
(即展开别名)     ,您不能在同一SELECT子句中引用列别名-您要么需要重现公式:
  SELECT t1.a,t2.d * t2.f AS m,SUM(t2.d * t2.f)   
    FROM table1 AS t1 
    JOIN table2 AS t2 ON t1.a = t2.a 
GROUP BY t1.b
..或使用派生表/内联视图:
SELECT x.a,x.m,SUM(x.m)
  FROM (SELECT t1.a,t2.d * t2.f AS m
          FROM table1 AS t1 
          JOIN table2 AS t2 ON t1.a = t2.a 
      GROUP BY t1.b) x
最早的MySQL允许引用列别名是
GROUP BY
子句(
HAVING
ORDER BY
也支持列别名)。但是大多数其他数据库仅支持
ORDER BY
子句。