MySQL总和多个表

时间:2014-06-13 04:24:49

标签: mysql

我有三张桌子。

result: result_id, person_id, result
area: person_id, district_id
district:  province_id, district_id

我想要SUM(result.result) GROUP BY province_id

但由于area.person_id有多个person_id,所以当我SUM(result.result)时,我总是得到双倍结果或三倍值来代替area.person_id中的数量。

你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

使用带有DISTINCT的子查询删除重复项。

SELECT province_id, SUM(result)
FROM (
  SELECT DISTINCT d.province_id, r.person_id
  FROM result AS r
  JOIN area AS a ON r.person_id = a.person_id
  JOIN district AS d ON a.district_id = d.district_id) AS p
JOIN result AS r ON p.person_id = r.person_id
GROUP BY province_id

DEMO