mysql - 连接两个表和两个连接表
问题描述
我有这些表:
- 游戏(game_id、game_name 等)
- 团队(teams_id、team_name 等)
- 玩家(players_id、player_name 等)
连接表:
- games_teams (game_id,teams_id)
- team_players (teams_id, player_id)
基本上每场比赛我都想看看球队的数量和球员的数量。
游戏名称 - 队伍数量 - 玩家数量
使用内部连接,我设法与团队而不是玩家一起加入游戏。我相信它涉及多个选择语句?
解决方案
您可以加入games
并在联结表teams
的帮助下。games_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
推荐阅读
- ajax - 我对使用 laravel 的 AJAX 帖子有问题
- javascript - JSON.parse() 字符串,在值中包含换行符
- jquery - JS 按钮,Jquery 选择器
- office-js - Office.js 提取 openXml 时缺少分页符(LastRenderedPageBreak)
- android - WebView 音频播放器在一段时间后自动停止
- apache-spark - Spark 流不从云存储源中选择新文件
- php - 如何在 wocommerce wordpress 网站中仅更改“结帐”的标题
- php - Laravel 权限被拒绝错误
- c# - 获取打开 c# 应用程序的文件位置
- python - Python3:计算嵌套字典中字符的出现次数