[英]SQL Help cant solve this query about inner joins
我必须弄清楚哪些游泳者在同一事件中获得相同的位置。 对于每对这样的游泳者,我必须显示一行,显示事件ID,地点和所涉及的每个游泳者的选手编号。 例
eventid place competitors tied
SWM012 2 1072528 1099641
SWM021 2 1018529 1061698
到目前为止,这是我的代码
select R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum
from Results R1, Results R2
where R1.Place = R2.Place
group by R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum
这是输出
eventid Place competitornum competitornum
SWM010 1 1121587 1056740
SWM010 1 1121587 1061698
依此类推,第一列的相同竞争对手编号与第二列的不同
我只想知道如何获得上面描述中的输出
首先,您可能还需要加入事件ID
select R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum
from Results R1, Results R2
where R1.Place = R2.Place AND R1.EventId = R2.EventId
group by R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum
上面的查询返回与此相同的结果
select distinct R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum
from Results R1, Results R2
where R1.Place = R2.Place AND R1.EventId = R2.EventId
但这将返回所有唯一的“联系”对。 一种解决方法是
select distinct R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum
from Results R1, Results R2
where R1.Place = R2.Place AND R1.EventId = R2.EventId AND R1.Competitornum > R2.Competitornum
但是,这仅适用于双向联系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.