Sql server 2008 SQL Server:对子表进行2次调用的单行结果
我已经搜索过了,但可能没有正确地使用搜索词。对于下面的简单查询,我真的需要一些设计帮助 我有一个列出游戏的父表Sql server 2008 SQL Server:对子表进行2次调用的单行结果,sql-server-2008,parent-child,Sql Server 2008,Parent Child,我已经搜索过了,但可能没有正确地使用搜索词。对于下面的简单查询,我真的需要一些设计帮助 我有一个列出游戏的父表 GAMENUM HOMEID AWAYID 1 25 29 2 12 17 3 13 12 团队表 TEAMID TEAMNAME 12 Blue 13 Yellow 17 Red 25
GAMENUM HOMEID AWAYID
1 25 29
2 12 17
3 13 12
团队表
TEAMID TEAMNAME
12 Blue
13 Yellow
17 Red
25 Pink
29 White
我需要的是一个查询,以获得如下列表
GAMENUM HOMEID AWAYID HOMETEAM AWAYTEAM
1 25 29 Pink White
2 12 17 Blue Red
3 13 12 Blue
如果没有与ID相关联的球队代码,我仍然希望返回比赛记录,但如果找不到主场球队或AWAYTEAM名称,则返回NULL。尝试以下操作:
SELECT DISTINCT p.GAMENUM, p.HOMEID, p.AWAYID, t1.TEAMNAME [HOMETEAM], t2.TEAMNAME [AWAYTEAM]
FROM [Parent] p
LEFT JOIN Team t1 ON t1.TEAMID = p.HOMEID
LEFT JOIN Team t2 ON t2.TEAMID = p.AWAYID
测试用例:
WITH [Parent] AS (SELECT * FROM (
SELECT 1 [GAMENUM], 25 [HOMEID], 29 [AWAYID] UNION ALL
SELECT 2, 12, 17 UNION ALL
SELECT 3, 13, 12) as [Parent]),
[Team] AS (
SELECT * FROM (
SELECT 12 [TEAMID], 'Blue' [TEAMNAME] UNION ALL
SELECT 13, 'Yellow' UNION ALL
SELECT 17, 'Red' UNION ALL
SELECT 25, 'Pink' UNION ALL
SELECT 29, 'White') as [Team])
SELECT p.GAMENUM, p.HOMEID, p.AWAYID, t1.TEAMNAME [HOMETEAM], t2.TEAMNAME [AWAYTEAM]
FROM [Parent] p
LEFT JOIN Team t1 ON t1.TEAMID = p.HOMEID
LEFT JOIN Team t2 ON t2.TEAMID = p.AWAYID
请检查测试用例结果我猜您的意思是
t1.TEAMNAME作为HOMETEAM,t2.TEAMNAME作为AWAYTEAM
?嗨,伙计们,我对最后四行上面的整个部分有点困惑。我计划使用数百支球队和数千场比赛。要得到一个显示所有游戏和游戏中的球队名称的查询,在上面的示例中是不可能的?看起来我可以通过添加不同的元素使其工作抱歉@JustJeffy,我更改了我的答案