订购自我加入的问题

时间:2016-02-11 20:35:36

标签: sql self-join

我有2张桌子。评论者有2列(rID,名称)和评分3列(rID,mID,星星)。我想选择所有评论者对,以便两位评论者对同一部电影进行评分。查询应返回两个审阅者的名称,消除重复项并按字母顺序返回每对的名称。我的代码是:

select distinct Re1.name, Re2.name 
from Reviewer Re1, Rating R1, Rating R2, Reviewer Re2
where R1.mID = R2.mID
and Re1.rID = R1.rID
and Re2.rID = R2.rID
and R1.rID <> R2.rID 
group by R1.mid
order by Re1.name

它产生了这个:

Ashley White        Chris Jackson
Chris Jackson       Brittany Harris
Elizabeth Thomas    Daniel Lewis
James Cameron       Elizabeth Thomas
Mike Anderson       Sarah Martinez

......虽然预期结果是:

Ashley White        Chris Jackson
Brittany Harris     Chris Jackson
Daniel Lewis        Elizabeth Thomas
Elizabeth Thomas    James Cameron
Mike Anderson       Sarah Martinez

我错过了什么?

1 个答案:

答案 0 :(得分:1)

使用R1. r ID < R2. r ID代替<>

这样您就可以根据ID控制订单了。

如果订单应基于名称,请保留原始ON条件并添加 R1. name < R2. name