电影数据库查询

时间:2014-03-15 21:19:02

标签: java mysql sql database

我需要你的电影测验应用程序的帮助,该应用程序向用户提问并提出4个答案(1个右3个错误)。我必须找到应用程序的查询,但它似乎并不适合我。

这是表格的架构 -

表一(movies)有4个值 - id(主键),标题(电影的标题),年份(发行年份),导演(电影导演)

表二(stars)有3个值 - id(主键),first_name,last_name

表三(stars_in_movies)有2个值 - movie_id,star_id(movie_id和star_id都是外键)

现在,对于问题:

我必须提出以下问题的查询,这些是我提出的问题。

  1. 影片x中的哪个明星?

    select first_name,last_name
      from stars_in_movies inner join stars
     where movie_id=%s and star_id=id;
    

    (这很好)

  2. 是谁导演了明星x?

    select director
      from movies inner join stars_in_movies
     where star_id=%s and movie_id = id; 
    

    (这似乎不起作用)

  3. 电影x和y中出现哪个星?

    select first_name,last_name
      from stars_in_movies inner join stars
     where (movie_id=%s and movie_id=%y) and star_id=id; 
    

    (这似乎也不起作用)

  4. 哪个明星没有出现在与明星x相同的电影中?

    (我不知道如何处理这个问题,但我正在考虑制作一个辅助函数来挑选一个至少有3颗星的随机电影,然后在问题中使用1颗星,其他两颗作为错误的答案。然后找到另一个与第一颗星没电影的随机明星。但我不知道如何为它编写代码。

1 个答案:

答案 0 :(得分:0)

哪颗星没有出现在与x星相同的电影中?

select first_name --All stars who have not acted with star X
from stars
where star_id not in
(
    select star_id --All stars who have acted with star X
    from stars_in_movies
    where movie_id in
    (
        select movie_id     --All movies in which star X has acted
        from stars_in_movies
        where star_id = "X"
    )
)

- 电影x和y中出现哪个星?

select A.first_name
from stars A,
(
select star_id
from stars_in_movies
where movie_id = "X"
)B,
(   
select star_id
from stars_in_movies
where movie_id = "Y"
)C
where A.star_id = B.star_id
AND B.star_id = C.star_id
是谁导演了明星X?

select director -- directors who have worked with star X
from movies
where movie_id in
(
    select movie_id  --All movies in which star X has acted
    from stars_in_movies
    where star_id = "X"
)