我有数据库:
电影(mid,title,year,director):有一个id号为mid的电影、一个title、一个发行年份和一个director。
审阅者(rid,name):id号为rid的审阅者具有特定的名称。
评分(rid,mid,stars,ratingdate):评论家rid在某个评分日期给电影mid打分(1-5)。
我需要所有的情况下,同一个评论员评价同一部电影两次,并给予较高的评价第二次,返回评论员的姓名和电影的标题。
我的问题

select r.name, m.title
from Reviewer r, Movie m, Rating rg
where rg.stars=(select max(g.stars) from Rating g
            where rg.mID=g.mid and g.rID=rg.rID
            group by g.stars
            having count(g.mid)=2)

但没有结果
你能告诉我我的错误在哪里吗?

最佳答案

Select r.name, m.title From Rating rg
Left join Reviewer r ON rg.rID = r.rID
Left join Movie m ON rg.mID = m.mID
Where rg.stars > (
    Select Top 1 g.stars From Rating g
    Where -- g.ratingDate != rg.ratingDate AND -- discard same rating
     g.mID = rg.mID and g.rID = rg.rID
     order by ratingDate desc
    )

关于sql-server - 我的查询似乎正确,但没有结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36116276/

10-12 15:16