Php SQL:获取分布在3个表上的数据

Php SQL:获取分布在3个表上的数据,php,sql,postgresql,Php,Sql,Postgresql,我正在尝试获取一些我维护的在线游戏的统计数据。我正在搜索一条SQL语句,以获得底部的结果 共有三个表格: 包含团队的表,每个团队都有一个唯一的标识符 table teams --------------------- | teamid | teamname | |--------|----------| | 1 | team_a | | 2 | team_x | --------------------- 一个包含玩家的表格,每个玩家都有一个唯一的标识符,并且可以选

我正在尝试获取一些我维护的在线游戏的统计数据。我正在搜索一条SQL语句,以获得底部的结果

共有三个表格:

包含团队的表,每个团队都有一个唯一的标识符

table teams
---------------------
| teamid | teamname |
|--------|----------|
| 1      | team_a   |
| 2      | team_x   |
---------------------
一个包含玩家的表格,每个玩家都有一个唯一的标识符,并且可以选择通过其唯一的teamid加入一个团队

table players
--------------------------------
| playerid | teamid | username |
|----------|--------|----------|
| 1        | 1      | user_a   |
| 2        |        | user_b   |
| 3        | 2      | user_c   |
| 4        | 2      | user_d   |
| 5        | 1      | user_e   |
--------------------------------
最后是一个包含事件的表。事件(持续时间以秒为单位)通过玩家ID与其中一名玩家相关

table events.
-----------------------
| playerid | duration |
|----------|----------|
| 1        | 2        |
| 2        | 5        |
| 3        | 3        |
| 4        | 8        |
| 5        | 12       |
| 3        | 4        |
-----------------------
我试图得出一个结果,总结所有团队成员的持续时间

result
--------------------------
| teamid | SUM(duration) |
|--------|---------------|
| 1      | 14            | (2+12)
| 2      | 15            | (3+8+4)
--------------------------

我尝试了几种联合、WHERE-IN、JOIN和GROUP的组合,但都做不好。我正在使用PostgreSQL和PHP。有人能帮我吗?

只需将
sum
分组依据一起使用即可:

select t.teamid, sum(e.duration)
from team t
   join players p on t.teamid = p.teamid
   join events e on p.playerid = e.playerid
group by t.teamid
如果您需要返回所有团队,即使他们没有事件,也可以使用
外部联接。

试试这个

SELECT teamid, Sum(duration), 
    AS LineItemAmount, AccountDescription
FROM teams
    JOIN teams ON teams.teamid = players.teamid
    JOIN events ON players.playersid = events.playersid
    JOIN GLAccounts ON InvoiceLineItems.AccountNo = GLAccounts.AccountNo
    GROUP BY teamid

非常感谢!工作起来很有魅力!