我在解决以下SQL请求时遇到问题:
1)“给出原始名称和年份,以及当前的名称和年份,以及在'1960'之前制作的电影的工作室,然后在'2000'之后重新制作。”
2)“获取'1951年之前创作的所有电影的电影名称'并在'2000'之后重拍”
有几张桌子,但我假设只需要2张:'电影'和'重拍'
'电影'属性:filmid,filmname,year,director,studio
'重拍'属性:filmid,title,year,priorfilm,prioryear
我的理解是重拍被包含在电影中,所以'重拍'表中的先前电影对应于'电影'表中的电影。我无法将两者联系起来以便能够安排年度条件。
答案 0 :(得分:0)
您需要将films
(对于原作)加入remakes
(告诉您电影的对应方式),然后再加入films
(对于重制版本)。
<强> 1 强>
SELECT o.filmname as originalname, o.year as originalyear,
c.filmname as remakename, c.year as remadeyear, o.studio
FROM films o
INNER JOIN remakes r on r.priorfilm = o.filmid
INNER JOIN films c on c.filmid = r.filmid
WHERE o.year < 1960 AND c.year > 2000
<强> 2 强>
SELECT o.filmname
FROM films o
INNER JOIN remakes r on r.priorfilm = o.filmid
INNER JOIN films c on c.filmid = r.filmid
WHERE o.year < 1951 AND c.year > 2000
答案 1 :(得分:0)
第一次查询
SELECT f.filmname, f.year, f.studio, r.title, r.prioryear
from film f , join remakes r on f.filmid = r.filmid
where r.year > 2000 and f.year < 1960;
第二次查询
select f.* from film f join remakes r on f.filmid = r.filmid
where f.year < 1951 and r.year > 2000