我有三个现有的SQL表,我们称之为“团队”,“里程”和“骑手”。抛弃绒毛,它们的结构看起来像这样:
Table: teams
------------+-------------+---------+
| team_name | captains_id | team_id |
------------+-------------+---------+
| superbads | 11 | 1 |
| superflys | 12 | 2 |
------------+-------------+---------+
Table: riders
--------------+-----------+----------+
| rider_name | team_id | rider_id |
--------------+-----------+----------+
| donatello | 1 | 10 |
| leonardo | 1 | 11 |
| michelangelo| 2 | 12 |
| raphael | 2 | 13 |
--------------+-----------+----------+
Table: miles
--------------+-----------+----------+
| rider_id | miles | id |
--------------+-----------+----------+
| 10 | 100 | 1 |
| 10 | 62 | 2 |
| 11 | 110 | 3 |
| 11 | 100 | 4 |
| 12 | 8 | 5 |
| 12 | 22 | 6 |
| 13 | 29 | 7 |
| 13 | 2 | 8 |
--------------+-----------+----------+
我需要返回一个团队列表,其中包含该团队产生的总里程数(我还需要返回团队队长的名字,但这更容易)。 困难在于我需要在车手上加入里程,将“里程”字段相加,然后以某种方式加入团队。
更改表结构几乎没有,因为这是一个现有的应用程序。这是一个LAMP环境,因此如果需要,可以在查询之后操作PHP数组。
答案 0 :(得分:3)
这应该这样做:
select t.team_id, t.team_name, t.captains_id, sum(m.miles) as total_miles
from teams t
inner join riders r on r.team_id = t.team_id
inner join miles m on m.rider_id = r.rider_id
group by t.team_id, t.team_name, t.captains_id