mysql - 尝试对来自三个 SQL 表的两组结果进行求和和分组

标签 mysql sql

我在按照我想要的方式对查询结果进行分组和求和时遇到了一些重大困难。我无法用语言解释我想做什么,所以我只给你看。我有三个表:A、H 和 W,它们看起来像(简化):

表 A:

Aid name
1   adam
2   bob 

表 H:

Hid Wid  date  atk  Aid
1   1    -     10   2
2   2    -     1    1
3   2    -     5    1
4   1    -     2    2
5   1    -     22   1
6   2    -     7    2

W 表:

Wid name     user pass
1   charlie  -    -
2   donald   -    -

我正在尝试获取按 Aid 和 Wid 分组的 atk 的总和。基本上,假设这是一个搏击俱乐部理货。我想显示 W 攻击 A 的次数的总和(这总是单向战斗,即:charlie 只能攻击 adam,但 adam 不能攻击 charlie)。 (不是真正的搏击俱乐部 - 用于在线游戏:))

我试图让我的结果看起来像:

name1     atk  name2
charlie   22   adam
charlie   12   adam
donald    6    bob
donald    7    bob

我当前的查询看起来像...

SELECT w.name AS name1, h.atk, a.name AS name2
FROM H 
JOIN W ON w.Wid=h.Wid
JOIN A ON a.Aid=h.Aid

...这给了我 name1 攻击 name2 的每个实例。当我尝试 GROUP BY 和/或 SUM(h.atk) 时,它正在以我无法弄清楚的方式进行分组或求和。我只是不明白如何做到这一点。任何帮助将不胜感激。

提前致谢!

最佳答案

SELECT w.name AS name1, sum(h.atk) as atk, a.name AS name2
 FROM H 
JOIN W ON w.Wid=h.Wid
JOIN A ON a.Aid=h.Aid
GROUP BY w.name, a.name

关于mysql - 尝试对来自三个 SQL 表的两组结果进行求和和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11909251/

相关文章:

php - 从 SELECT * FROM users WHERE url = "pretty url"开始,到使用 Lithium Framework 显示数据库中的 1 行

mysql - 使用 OR 查询使查询执行缓慢

mysql - 更新集 = 从中选择

php - 事件记录 +1 值

sql - 按日期排序数据?

sql - 查询按日期范围分隔的行数

java - 是什么导致 JBoss 7.1.1 中出现此 SQL/Hibernate 错误?

mysql多对多关系查询

sql - GROUP BY 作为从一组相似行中选择第一行的方法,这是正确的吗,还有其他选择吗?

sql - 如何在 SSRS 报告中显示今天的日期?