Sql 在一定条件下如何求多对多的和?

Sql 在一定条件下如何求多对多的和?,sql,Sql,我有一个多对多的关系,我想找到在某个日期创建的一些a的所有W及其总和(频率)。 最好的方法是什么 结果应而不是为: w.name | sum -------+------ bar | 2 bar | 5 baz | 4 bim | 3 foo | 2 foo | 3 结果应该是: w.name | sum -------+------ bar | 7 baz | 4 bim | 3 foo | 5

我有一个多对多的关系,我想找到在某个日期创建的一些a的所有W及其总和(频率)。 最好的方法是什么

结果应而不是为:

w.name | sum 
-------+------
 bar   |  2
 bar   |  5  
 baz   |  4
 bim   |  3
 foo   |  2
 foo   |  3  
结果应该是:

w.name | sum 
-------+------
 bar   |  7  
 baz   |  4
 bim   |  3
 foo   |  5 
我的桌子:

表A:

id  | title | author | created_at 
----+-------+--------+-------------
... |  ...  |  ...   | ...
11  |  abc  |  ccc   |  Thu, 5 Apr 2012 08:01:25 GMT
12  |  bcb  |  ddd   |  Thu, 5 Apr 2012 10:11:15 GMT
13  |  dfg  |  aaa   |  Fri, 6 Apr 2012 07:33:45 GMT
表AW:

id  | aid | wid | freq
----+-----+-----+------
... | ... | ... | ...
201 | 11  |  2  |  2
202 | 11  |  3  |  4
203 | 11  | 17  |  2
204 | 12  | 17  |  3
205 | 12  | 66  |  1
206 | 12  | 12  |  2
207 | 12  | 24  |  5
208 | 12  |  7  |  3
209 | 13  |  2  |  5
210 | 13  | ... | ...
表W:

id  | name  |  ...  
----+-------+--------
... |  ...  |  ...   
2   |  bar  |  ...   
3   |  baz  |  ...   
... |  ...  |  ...
7   |  bim  |  ...   
... |  ...  |  ...
17  |  foo  |

对于每个
W
,今天创建的
A
的频率总和:

select  W.name
,       sum(AW.frequency)
from    A
join    AW
on      AW.aid = a.id
join    W
on      W.id = AW.bid
where   '2012-04-08' < A.created_at and A.created_at < '2012-04-09'
group by
        W.name
选择W.name
,总和(AW.频率)
从
加入AW
关于AW.aid=a.id
加入W
在W.id=AW.bid上
其中“2012-04-08”和“2012-04-09”
分组
W.name
选择w.名称、总和(aw.频率)
从内部连接aw ON(a.id=aw.aid)
内部连接w ON(aw.wid=w.id)

其中a.created_at>=初始日期和a.created_at抱歉,我的问题描述不够清楚。如果可以在另一个a.id中找到w.id,则应将其汇总。请在问题描述中查看我的更新。
SELECT w.name, SUM(aw.frequency)
FROM a INNER JOIN aw ON (a.id = aw.aid)
       INNER JOIN w ON (aw.wid = w.id)
WHERE a.created_at >= INITIAL_DATE and a.created_at <= END_DATE
GROUP BY w.name