0

架空の表「結果」から、同じイベントで同じ順位を獲得した競合他社を選択しようとしています。このクエリの何が問題になっているのか誰か知っていますか?

競合他社の番号が異なるのではなく、同じ競合他社の番号が隣り合っているだけのようです。

Select Eventid, Place, c1.Competitornum, c2.Competitornum
From Results natural join Results c2
Where c1.Place = c2.Place 
and c1.Eventid = c2.Eventid
Order by Eventid, Place
4

1 に答える 1

0

Anatural joinは、すべての同一フィールドをフィルター処理します。つまり、現在のwhere句は不要です。また、結合条件に が含まれていることも意味し、Compititornum同一の行のみを取得する理由を説明していますCompetitornum

の代わりに、natural joinを試してくださいinner join。を使用すると、句inner joinで結合条件を明示的に設定できます。on

select  c1.Eventid
,       c1.Place
,       c1.Competitornum
,       c2.Competitornum
from    Results c1
inner join 
        Results c2
on      c1.Place = c2.Place 
        and c1.Eventid = c2.Eventid
        and c1.Competitornum <> c2.Competitornum
于 2012-09-12T03:44:11.560 に答える