连接两个表和两个连接表

时间:2021-01-22 22:40:45

标签: mysql sql join select junction-table

我有这些表:

  • 游戏(game_id、game_name 等)
  • 团队(teams_id、team_name 等)
  • 玩家(players_id、player_name 等)

连接表:

  • games_teams (game_id,teams_id)
  • teams_players (teams_id, player_id)

基本上每场比赛我都想看到球队的数量和球员的数量。

游戏名称 - 团队数量 - 玩家数量

使用内连接,我设法与团队而不是玩家一起加入游戏。我相信它涉及多个选择语句?

1 个答案:

答案 0 :(得分:2)

您可以在 games 连接表的帮助下连接 teamsgames_teams。然后,您可以将其与 teams_players 结合以获取玩家 ID。请注意,对于此查询,您甚至不需要 players 表,因为您只需要它们的编号:

SELECT   game_name, 
         COUNT(DISTINCT gt.team_id) AS number_of_teams,
         COUNT(DISTINCT tp.player_id) AS number_of_players
FROM     games g
JOIN     games_teams gt on g.game_id = gt.game_id
JOIN     teams t ON gt.team_id = t.team_id
JOIN     teams_players tp ON t.team_id = tp.team_id
GROUP BY game_name
相关问题