0

同じイベントでどのスイマーが同じ場所に着いたのかを把握する必要があります。そのようなスイマーのペアごとに、イベントID、場所、および関係する各スイマーの競技者番号を示す1つの行を表示する必要があります。例

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

以下同様に、2番目のcompetitornum列で異なる最初の列の同じcompetitornum

上記の説明のように出力を取得する方法を知りたいだけです

4

1 に答える 1

0

まず、イベント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

しかし、これは「ネクタイ」のすべての一意のペアを返します。1つの解決策はこれです

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

ただし、これは双方向のタイでのみ機能します。

于 2012-08-30T04:09:46.883 に答える