我有一个简单的问题,我相信很多人可以相对容易地回答。我已经阅读了几个关于这个主题的网站和以前的问题,我仍然感到困惑。我是新手,但很快就学习......
我的两张桌子:
表1:排名:
Rank firstinitial LastName Pos Team
51 A Ellington RB ARI
78 M Floyd WR ARI
85 L Fitzgerald WR ARI
86 J Brown WR ARI
107 D Johnson RB ARI
147 A Cardinals DST ARI
180 C Palmer QB ARI
205 C Johnson RB ARI
223 C Catanzaro K ARI
288 S Taylor RB ARI
表2:深度:
Team pos pos2 firstinitial lastname
ARI K K1 C Catanzaro
ARI QB QB1 C Palmer
ARI QB QB2 D Stanton
ARI QB QB3 M Barkley
ARI RB RB1 C Johnson
ARI RB RB2 A Ellington
ARI RB RB3 D Johnson
ARI RB RB4 S Taylor
ARI RB RB5 K Williams
ARI TE TE1 D Fells
ARI TE TE2 J Gresham
ARI TE TE3 T Niklas
ARI TE TE4 G Christian
ARI WR WR1 L Fitzgerald
ARI WR WR2 M Floyd
ARI WR WR3 J Brown
ARI WR WR5 J Nelson
ARI WR WR6 B Golden
SQL代码:
SELECT DISTINCT
[r].[Rank]
,[d].[firstinitial] + '.' + [d].[LastName] as Fullname2
,[r].[Team]
,[r].[Bye]
,[r].[Pos]
,[d].[pos2]
FROM [football].[dbo].[rank] [r]
inner join [football].[dbo].[depth] [d] on [d].[firstinitial] + [d].[LastName] = [r].[firstinitial] + [r].[LastName]
where [d].[pos2] IS NOT NULL
and [r].[Pos] = [d].[pos]
order by [r].[Team], [d].[pos2]
结果:
Rank Fullname2 Team Bye Pos pos2
223 C.Catanzaro ARI 9 K K1
180 C.Palmer ARI 9 QB QB1
205 C.Johnson ARI 9 RB RB1
107 D.Johnson ARI 9 RB RB2
51 A.Ellington ARI 9 RB RB2
107 D.Johnson ARI 9 RB RB3
288 S.Taylor ARI 9 RB RB4
85 L.Fitzgerald ARI 9 WR WR1
78 M.Floyd ARI 9 WR WR2
78 M.Floyd ARI 9 WR WR3
86 J.Brown ARI 9 WR WR3
86 J.Brown ARI 9 WR WR4
问题:
在这个例子中,'RB2'位置(在'pos2'下)在两个不同的个体的结果中显示两次。但是,如果我们查看表格,我们会看到'A.Ellington'应该是'pos2'中列为'RB2'的唯一人。我不确定加入时我缺少什么。期望的结果将显示唯一的行,没有重复。
请帮助并解释正确的过程。谢谢!
答案 0 :(得分:0)
我看不出具体是什么导致了你的问题,但我看错了。你的加入应该包括团队,你加入连接的字符串;你应该简单地将列与列匹配。
SELECT DISTINCT
[r].[Rank]
,[d].[firstinitial] + '.' + [d].[LastName] as Fullname2
,[r].[Team]
,[r].[Bye]
,[r].[Pos]
,[d].[pos2]
FROM [football].[dbo].[rank] [r]
inner join [football].[dbo].[depth] [d] on [r].[Team]=[d].[Team]
AND [d].[firstinitial] = [r].[firstinitial]
AND [d].[LastName] = [r].[LastName]
AND [r].[Pos] = [d].[pos]
where [d].[pos2] IS NOT NULL
order by [r].[Team], [d].[pos2]