表"Teams"

TEAM ID TEAMNAME
1 NAME-1
2 NAME-2
3 NAME-3
... ...

表"GameScores"

GameID HomeTeam(FK) AwayTeam(FK) HomeTeamScore AwayTeamScore
1 1 2 30 20
2 2 3 35 30
3 3 4 40 30
4 4 5 50 60

我想要连接这两个表,所以我得到了下表:

GameID HomeTeam(FK) AwayTeam(FK) HomeTeamScore AwayTeamScore
1 NAME-1 NAME-2 30 20
2 NAME-2 NAME-3 35 30
3 NAME-3 NAME-4 40 30
4 NAME-4 NAME-5 50 60

为了清楚起见,我们的目标是用表Teams中的相应值(团队名称)替换FK,并保留表B的列名.我try 了以下方法的许多变体,但效果不是很好:

SELECT
[GameScores].[GameID],
[Teams].[TeamName],
[Teams].[TeamName],
[GameScores].[HomeTeamScore],
[GameScores].[AwayTeamScore]

FROM [GameScores]
INNER JOIN [Teams] ON [GameScores].[HomeTeam]=[Teams].[TeamID]

推荐答案

两次使用不同的别名加入桌上团队

SELECT GameScores.GameID
    ,TeamH.TeamName
    ,TeamA.TeamName
    ,GameScores.HomeTeamScore
    ,GameScores.AwayTeamScore
FROM GameScores 
    INNER JOIN Teams TeamH ON GameScores.HomeTeam=TeamH.TeamID
    INNER JOIN Teams TeamA ON GameScores.AwayTeam=TeamA.TeamID

Sql相关问答推荐

判断时间之间是否有时间

判断Pyspark生成的SQL查询

将SEMI JOIN、ANTI JOIN转换为非连接SQL

当有空单元格时,如何连接列

将有界时间周期作为阶跃函数,其中周期开始返回1,周期结束返回0

使用Lead获取下一个不同的日期

SQL Select 最小优先级

OVER子句WITH PARTITION BY和ORDER BY忽略主查询的WHERE子句

如何在SQL Server中统计按备注分组的记录数

如何用HeidiSQL在Firebird中设置超时?

postgres中的条件索引和触发器

聚合内部的条件在哪里?

将具有嵌套 XML 的列转换为 SQL 中的表格格式?

SQL SUM Filter逻辑解释

SQL Server:时态表并在运行时添加计算列

在 SQL 中使用循环遍历按时间顺序排列的数据

postgres按组消除分区中的NULLS

雅典娜弄错了操作顺序

Athena:从字符串birth_dt列计算年龄

从 JSON 数组中移除对象