我有数据库:
Movie ( mID, title, year, director ) :有一部电影,ID 号为 mID,标题,发行年份和导演。
Reviewer ( rID, name) : ID号为rID的reviewer有一个特定的名字。
Rating ( rID, mID, stars, ratingDate ) :评论者 rID 在特定的 ratingDate 给电影 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/