2017-08-26 98 views
0

IM在SQL的exercice工作: 数据库:SQL对两个结果在两个不同的列

电影(MID,名称,年份,导演) 英语:有一个电影的ID号mID,标题,发行年份和>导演。

点评(RID,名称) 英文:与ID号码的评RID具有一定的名称。

评分(rID,mID,stars,ratingDate) 英语评论者rID给了影片mID一些评级(1-5)>一定ratingDate。

他们用此查询相同的结果有两种clomns结合:

select distinct (select name 
from reviewer 
where rid = r1.rid) as n1, 
(select name 
from reviewer 
    where rid = r2.rid) 
    from rating r1 join rating r2 using (mid) 
    where r1.rid <> r2.rid and (select name 
    from reviewer 
    where r1.rid = rid) < (select name 
    from reviewer 
    where rid = r2.rid) 
    order by n1 

我没有得到这部分它是如何工作或者是什么意思:

 r1.rid <> r2.rid and (select name 
         from reviewer 
         where r1.rid = rid) < (select name 
               from reviewer 
               where rid = r2.rid) 
+0

我们正在搜索查询:对于所有对评审的,使得两个审稿的整体评价为同一部电影,同时返回评论者的名字。消除重复,不要将评论者与自己配对,并且只将每个对包括一次。对于每一对,按字母顺序返回对中的名称。 –

回答

1

r1.rid <> r2.rid现在你有加入对评审表,它的别名是r1r2r1.rid <> r2.rid手段“从两个别名,请确保你得到一个地方的ID是不同的。”

(select name 
from reviewer 
where r1.rid = rid) < (select name 
         from reviewer 
         where rid = r2.rid) 

您正在检索任何潜在重复项中名称的第一个实例。

2

r1.rid <> r2.rid意味着r1.rid NOT EQUAL TO r2.rid

(select name from reviewer 
where r1.rid = rid)  < (select name from reviewer 
           where rid = r2.rid) 

意味着

get reviewer name whose value is less than other

基本上两个条件都检查你没有得到任何重复值

另请注意,如果您删除您的任何状况下,你可能会得到重复/双项