SQL查询 - 在同一事件中显示具有相同结果的竞争对手

时间:2012-09-12 03:31:34

标签: sql

我正在尝试从一个假设的表格“结果”中选择在相同事件中获得相同位置的竞争者。有谁知道这个查询有什么问题?

我似乎只能获得相同的竞争对手数字而不是不同的竞争对手数字。

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

1 个答案:

答案 0 :(得分:0)

所有相同字段的natural 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