繁体   English   中英

复杂的3种方式进行SQL连接(其中表3必须在连接表1之前先连接表2)

[英]Complex 3 way SQL join (where table 3 has to join table 2 before joining table 1)

我有三个现有的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数组。

应该这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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