sql查询

gpnt7bae  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(330)

imdb数据库有以下表

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)

a) 写一个查询,列出那些在90年代(1990-1999年)出演过一部评分高于8.5分的电影的女演员。
b) 写一个查询,列出所有演员谁在一部电影评分低于3.0两次或两次以上。列出演员的名字、电影和每个级别,按演员的姓和名升序排列。
c) 写一个查询,列出所有演员谁在两个或两个以上的不同类型的电影。列出他们的名字,电影和各自的类型。
我的答案是:
(一)

SELECT actors.firstname 

    from ((roles inner join movies on roles.mid=movies.id)
            inner join actors on actors.id=roles.aid) 
    where (movies.year between 1990 and 1999)
            and
          (movies.rank >= 8.5)

. 对吗?
任何人都能帮助解决其他问题。提前谢谢

gopyfrb3

gopyfrb31#

你忘记了性别,高于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、 这是你的作业吗?

lf5gs5x2

lf5gs5x22#

还有一个变体:

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)));
jhkqcmku

jhkqcmku3#

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表

actors(id, first_name, last_name, gender,role)
movies(id, name,year, rank)

相关问题