在SQL中具有多个连接的复杂where子句

时间:2016-01-24 21:38:31

标签: mysql sql join

我们说我有一个数据库,我正在跟踪几个足球联赛的统计数据。我的表格和相关栏目如下。

联赛:id 球队:id,league_id 玩家:id,team_id 目标:id,player_id,num_goals

如您所见,这实际上是一系列hasManyThrough关系。一个联盟通过球队有很多球员。一支球队通过球员有很多目标。等等。我正在编写一个查询,按联赛总计目标数量。到目前为止,我的最大努力是这样的:

select('id', 'name') from leagues,
join teams where ('teams.id' = 'leagues.id'),
join players where ('players.id' = 'teams.id'),
join goals where ('goals.id' = 'players.id'),
sum('goals.num_goals');

该查询的目标是返回联盟ID,联赛名称以及该联盟中球员得分的数量。

1 个答案:

答案 0 :(得分:1)

你的联接是好的,问题在于你如何做总和。

Sum语句应该在select语句中,最好带有group by语句。你也不应该用'符号

包装列名
select leagues.id, leagues.name, sum(goals.num_goals) from leagues
  join teams on teams.id = leagues.id
  join players on players.id = teams.id
  join goals on goals.id = players.id
group by leagues.id, leagues.name;