简体   繁体   中英

Trying to sum and group two sets of results from three SQL tables

I am having some major difficulties with grouping and summing results of a query in the way I want. I am having trouble explaining what I want to do in words, so I'll just show you. I have three tables: A, H, and W which look like (simplified):

Table A:

Aid name
1   adam
2   bob 

Table 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

Table W:

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

I am trying to get the SUM of atk grouped by Aid and Wid. Basically, assume this is a fight club tally. I want to display the sum of how many times person W attacked person A (it will always be a one directional fight, ie: charlie can only attack adam, but adam can't attack charlie). (not really a fight club - being used for an online game :))

I am trying to get my result to look like:

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

My current query looks like...

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

...which gives me every instance that name1 attacked name2. When I try to GROUP BY and/or SUM(h.atk) it is grouping or summing in a way I can't figure out. I'm just not understanding how to accomplish this. Any help would be greatly appreciated.

Thanks in advance!

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM