SQL电影数据库查询

时间:2012-11-07 16:25:20

标签: sql sqlplus

我在解决以下SQL请求时遇到问题:

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

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

有几张桌子,但我假设只需要2张:'电影'和'重拍'

'电影'属性:filmid,filmname,year,director,studio

'重拍'属性:filmid,title,year,priorfilm,prioryear

我的理解是重拍被包含在电影中,所以'重拍'表中的先前电影对应于'电影'表中的电影。我无法将两者联系起来以便能够安排年度条件。

2 个答案:

答案 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