尝试基于挑战匹配系统创建SQL Server查询。我想在查询中加入两个表:Users
和ChallengeMatches
。
Users
表格中的列为UserID, UserDisplayName
ChallengeMatch
表格中的列为ChallengeMatchID, ChallengerUserID, ChallengeeUserID
当然,所有ChallengeeUserID
和ChallengerUserID
都在Users
表中列为唯一身份用户。我希望查询要做的是针对每个挑战匹配(ChallengeMatch
表中的行),返回两个挑战参与者的UserDisplayName
,例如PlayerName1
,PlayerName2
。
任何帮助都将不胜感激。
答案 0 :(得分:7)
您需要两次加入Users表。这应该可以解决问题:
select
u1.UserDisplayName as [Challenger],
u2.UserDisplayName as [Challengee]
from ChallengeMatch cm
left outer join Users u1
on cm.ChallengerUserID = u1.UserID
left outer join Users u2
on cm.ChallengeeUserID = u2.UserID
where cm.ChallengeMatchID = 2 /* specify value for relevant match */
答案 1 :(得分:2)
Select * FROM
(
SELECT 'Challenger' [Type]
,ChallengerUserID [UserID]
from ChallengeMatch
where ChallengeMatchID=2
UNION ALL
SELECT 'Challengee' [Type]
,ChallengeeUserID [UserID]
from ChallengeMatch
where ChallengeMatchID=2
) as c
Inner join Users u
ON c.UserID=u.UserID
返回的结果与@Citsonga略有不同,但也有效 我会考虑更多地存储信息,就像嵌套选择看起来一般(除了Type将是你需要的用户类型表的Int外键),以便更容易地加入这种性质。它还允许您扩展到每场比赛超过1个挑战者/ e