0

我无法解决以下 SQL 请求:

1)“给出原始名称和年份,以及现在的名称和年份,以及在'1960'之前制作然后在'2000'之后重新制作的电影的工作室。”

2)“获取所有在'1951'之前创作并在'2000'之后重拍的电影的电影名称”

有几张桌子,但我假设只需要两张:“电影”和“翻拍”

“电影”属性:电影ID、电影名称、年份、导演、工作室

'remakes' 属性:filmid、标题、年份、priorfilm、previousyear

我的理解是重拍包含在电影中,因此“重拍”表中的先前电影对应于“电影”表中的电影ID。我无法将两者联系起来以放置年份条件。

4

2 回答 2

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
于 2012-11-07T16:30:15.413 回答
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
于 2012-11-07T16:37:54.210 回答