IMDB数据库具有以下表
-n, --lines=[-]NUM print the first NUM lines instead of the first 10;
with the leading '-', print all but the last
NUM lines of each file
a)编写一个查询,列出在90年代(1990-1999年)出现在电影中的女性演员,这些女性演员的评分高于8.5。
b)编写一个查询,列出所有两次评级低于3.0的电影中的演员。列出演员的姓名,电影和每个等级,按照演员的姓氏和名字的升序排列。
c)编写一个查询,列出所有参加过两部或更多部不同流派电影的演员。列出他们的名字,电影和各自的流派。
我的答案:
a)
actors(id, first_name, last_name, gender)
directors(id, first_name,last_name)
directors_genres(director_id, genre, prob)
movies(id, name,year, rank)
movies_directors(director_id, movie_id)
roles(actor_id,movie_id, role)
movies_genres(movie_id, genre)
。是对的吗?
,任何人都可以帮助您处理其他查询。预先感谢
答案 0 :(得分:0)
您忘记了性别,并且高于8.5(不高于或等于)。
SELECT actors.firstname
from roles inner join movies on roles.movie_id = movies.id
inner join actors on actors.id=roles.aid
where movies.year between 1990 and 1999
and movies.rank > 8.5
and actors.gender = 'F';
P.S。这是你的学校作业吗?
答案 1 :(得分:0)
SELECT
first_name, last_name
FROM actors
JOIN
movies ON actors.id=movies.id
WHERE movies.gender='female'and movies.rank>8.5 AND movies.year
BETWEEN
1990-1999
向角色表添加角色
actors(id, first_name, last_name, gender,role)
movies(id, name,year, rank)
答案 2 :(得分:0)
另一个变体:
SELECT actors.firstname FROM actors WHERE id IN(
SELECT actors_id FROM roles WHERE movies_id IN(
SELECT id FROM movies WHERE (movies.year BETWEEN 1990 and 1999)
and (movies.rank >=8)));