我有四个 MySql 表(在这里简化):
表 1:派系(仅供参考)
id | name
1 | FactionName1
2 | FactionName2
表 2:货币(仅供参考)
id | name
1 | Currency1
2 | Currency2
3 | Currency3
表 3:事件(仅供参考)
id | name | date
1 | Evebt1 | 2013-10-16
2 | Event2 | 2013-10-18 (Note: date out of order)
3 | Event3 | 2013-10-17
表4:event_banking(每个事件后输入的数据,每个组的每种货币的剩余金额)
id | faction_id | currency_id | event_id | amount
1 | 1 | 1 | 1 | 10
2 | 1 | 1 | 2 | 20
3 | 1 | 1 | 3 | 30
4 | 1 | 2 | 1 | 40
5 | 1 | 2 | 2 | 50
6 | 1 | 2 | 3 | 60
7 | 1 | 3 | 1 | 70
8 | 1 | 3 | 2 | 80
9 | 1 | 3 | 3 | 90
10 | 2 | 1 | 1 | 100
11 | 2 | 1 | 2 | 110
12 | 2 | 1 | 3 | 120
13 | 2 | 2 | 1 | 130
14 | 2 | 2 | 2 | 140
15 | 2 | 2 | 3 | 150
16 | 2 | 3 | 1 | 160
17 | 2 | 3 | 3 | 170
注意:阵营 2 没有为事件 2 存入货币 3
我希望能够做的是为每种货币获取每个派系的最后一次银行存款(日期明智)的总数。(即如果所有派系合并,每种货币目前总共存入多少)
所以,我需要一个看起来像这样的表:
currency_id | total
1 | 130 (eg 20 + 110)
2 | 190 (eg 50 + 140)
3 | 250 (eg 80 + 170) <- Uses Event 3 for Group 2 as Event 2 doesn't exist
我可以进行基本的连接等,但我很难过滤结果,以便我获得每个 Faction x Currency x Event 的最新结果,然后我可以将它们加在一起以获得每种货币的最终总金额。
我尝试了 LEFT OUTER JOIN、GROUP BYss 和 HAVING COUNTs 的各种排列,并得到了一些有趣的(但不正确的结果)和各种不同的错误代码,但没有什么能与我的需要相近。
任何人都可以帮忙吗?