mysql - 具有 id 的多列的 SQL 连接
问题描述
我有两个 SQL 表。第一个表存储了运动员列表及其 id 和姓名。例如:
athlete_id | first_name | last_name
-----------|------------|----------
1 | Matthew | Reese
2 | Tiffanie | Renz
3 | Tom | Dow
ETC...
第二个表存储赛道(短跑)事件的条目,以及在每个车道上竞争的运动员的 id。例如:
event_id | lane1_athlete_id | lane2_athlete_id | lane3_athlete_id
---------|------------------|------------------|-----------------
1 | 1 | 15 | 24
2 | 18 | 2 | 4
3 | 78 | 50 | 3
ETC...
我需要创建一个 SQL 查询,该查询将返回第二个表,但将运动员 ID 解析为运动员姓名。例如:
event_id | lane1_athlete | lane2_athlete | lane3_athlete
---------|---------------|---------------|--------------
1 | Matthew Reese | Lesa Allain | Nicole Spiers
2 | Emmy Bartol | Tiffanie Renz | Louise Baier
3 | Zack Bui | Norah Flagg | Tom Dow
我想这涉及到一个表连接,但我无法理解正确的查询。任何帮助,将不胜感激。
解决方案
将第二个表加入第一个表,三次:
SELECT
e.event_id,
CONCAT(a1.first_name, ' ', a1.last_name) AS lane1_athlete,
CONCAT(a2.first_name, ' ', a2.last_name) AS lane2_athlete,
CONCAT(a3.first_name, ' ', a3.last_name) AS lane3_athlete
FROM events e
LEFT JOIN athletes a1
ON e.lane1_athlete_id = a1.athlete_id
LEFT JOIN athletes a2
ON e.lane2_athlete_id = a2.athlete_id
LEFT JOIN athletes a3
ON e.lane3_athlete_id = a3.athlete_id;
推荐阅读
- java - 无法自动接线。没有JacksonTester的豆子
找到类型 - asp.net-core - WCF 客户端配置 SSL 和 HTTP 选项
- php - 使用通过 ftp 上传的文件创建下载/媒体库
- powershell - 检查powershell字符串是否包含星号
- uninstallation - 由于运行时异常,卸载程序无法正常工作
- angular - 在 Angular + WebAPI 应用程序中管理会话
- c# - AspNetCore Identity 在运行时更新 DbContext
- c++ - 如何使函数参数在 C++ 中以单行方式传递之前和之后执行某些操作
- javascript - 从 AWS S3 到 Node.js 服务器的文件检索,然后到 React 客户端
- r - 与 R 中另一个数据框中的列匹配时替换数据框列中的值