2012-08-10 39 views
1

我在按照我想要的方式对查询进行分组和汇总结果时遇到一些主要困难。我无法用文字解释我想要做什么,所以我只会告诉你。我有三个表:A,H和W,其看起来像(简化):试图从三个SQL表中总结和分组两组结果

表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 

表宽:

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

我想获得由援助和维德分组的atk。基本上,假设这是一个战斗俱乐部理货。我想显示W人攻击A人的次数(它总是单向战斗,即:查理只能攻击亚当,但亚当不能攻击查理)。 (不是一个真正的搏击俱乐部 - 被用于在线游戏:))

我试图让我的结果是这样的:

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)进行分组或总结时,我无法弄清楚。我只是不理解如何完成这一点。任何帮助将不胜感激。

在此先感谢!

回答

0
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 
+0

这看起来不错。秘密在于小组由w.name,a.name – HerrSerker 2012-08-10 21:22:16

+0

这个答案看起来不错。 @Stedel有一点是,它看起来像你提供的样本输出表并不是你想要的。你想要的输出不是这样吗? name1,atk,name2 charlie,22,adam charlie,12,bob donald,6,adam donald,7,bob – user1590499 2012-08-10 21:29:13