【发布时间】:2018-09-08 03:23:22
【问题描述】:
我有两个 SQL 表。第一个表存储了运动员列表及其 id 和姓名。例如:
athlete_id | first_name | last_name
-----------|------------|----------
1 | Matthew | Reese
2 | Tiffanie | Renz
3 | Tom | Dow
等等……
第二个表存储赛道(短跑)项目的条目,以及在每个车道上竞争的运动员的 ID。例如:
event_id | lane1_athlete_id | lane2_athlete_id | lane3_athlete_id
---------|------------------|------------------|-----------------
1 | 1 | 15 | 24
2 | 18 | 2 | 4
3 | 78 | 50 | 3
等等……
我需要创建一个 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
我想这涉及表连接,但我无法理解正确的查询。任何帮助将不胜感激。
【问题讨论】:
-
虽然您在下面有一个很好的解决方案,但我可能建议将您的数据库更改为 3 个表而不是 2 个 - 运动员、事件和 eventathletes(可能包含一个 laneid 列的 1-many 表)。这样您就不必在每次引入新通道时添加更多列。您的问题的解决方案会有所不同,但我相信这将是更规范的方法。