我目前正在数据库上进行在线Standford课程,如果你能帮我解决这个SQL问题,我将非常感激。对不起,我是一个完整的菜鸟。
Table Movie:
mID | title | year | director
Table Rating
rID | mID | stars | ratingDate
Table Reviewer
rID | name
删除电影年份在1970年之前或2000年之后的所有评分,评分少于4星。
答案 0 :(得分:0)
那个课程真的很棒!它没有自己的论坛吗?我打赌问题已经在那里被问到了。
无论如何,第一步是找到您要删除的行:
select r.rID
from Rating r
join Movie m
on r.mID = m.mID
where (m.Year < 1970 or m.Year > 2000)
and r.stars < 4
现在你可以写一个delete
声明:
delete from Rating
where rID in
(
... query from above ...
)
享受课程的其余部分!
答案 1 :(得分:0)
您的问题中的问题是您希望根据其他表中的信息从一个表中删除日期。为了实现这一点,您可以使用子选择来识别要在表格中删除的记录&#34;评级&#34;。
该子选择语句定义评级和电影记录之间的关系,并指定电影年份的谓词。
DELETE FROM Rating
WHERE stars < 4
AND rID in
(SELECT r.rID
FROM Rating r, Movie m
WHERE r.mID=m.mID AND (m.year<1970 OR m.year>2000))