【问题标题】:Find all actors who played in the same movie as Tom Hanks查找与汤姆·汉克斯在同一部电影中演出的所有演员
【发布时间】:2017-07-04 19:02:32
【问题描述】:

我有一个 sql 语句的开头,我应该在其中找到与汤姆汉克斯在同一部电影中扮演过的所有演员。

select  a.name, m.title
from actor a 
inner join character c
inner join movie m

on a.id = c.actor_id
on c.movie_id = m.id

where a.name = 'Tom Hanks'

但是,这段代码只给了我汤姆汉克斯演过的所有电影的名字,而不是每个演员的名字。

表格是这样的

Actor:
  ID
  name

  Primary Key: ID      

Character:
  Actor_ID
  Movie_ID
  Character

  Primary Key: (actor_id, movie_id, character)
  Foreign Key: actor_id references actor(id)
  Foreign Key: movie_id references movie(id)

Movie:
  ID
  Title
  Year
  Mpaa_rating
  Audience_score
  Critics_score

  Primary Key: ID

我已经用不同的子查询和内部连接搞砸了一段时间,但似乎无法弄清楚我做错了什么。

【问题讨论】:

    标签: sql subquery inner-join


    【解决方案1】:

    为简单起见分成子查询

    -- get all actors that are in movies that tom hanks is in
    SELECT  * 
    FROM    actor 
    WHERE   
        actor_id IN 
        (   -- get all actor ids that are in movies that tom hanks is in
            SELECT  actor_id 
            FROM    character 
            WHERE   
                movie_id IN 
                (   -- get all movies that tom hanks is in
                    SELECT  movie_id 
                    FROM    character
                    WHERE   
                        actor_id IN 
                        (   -- get actor ids that equal tom hanks
                            SELECT id 
                            FROM actor 
                            WHERE name = 'Tom Hanks'
                        )
                )
        )
    

    【讨论】:

      【解决方案2】:

      我之前犯了一个错误,需要一个“in”而不是“=” 你也应该试试这个:

      Select a.name, m.title
      From actor a, movie m, character c
      Where a.id = c.actor_id
      And m.id = c.movie_id
      And m.id in ( select movie_id from character where actor_id = (select id from actor where name = 'the name'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-10
        • 2015-06-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多