CS50 Pset7 电影 - 13.sql
CS50 Pset7 Movies - 13.sql
我正处于此问题集的最后一步,在获取凯文·培根 (Kevin Bacon) 主演的电影中的主演姓名时遇到了问题。我把这段代码放在一起,它现在只产生一个名字,Steve Guttenberg。根据我在我的代码中的逻辑(我将包括注释)它应该给我所有的名字(是的,我知道 Kevin Bacon 本人最终不应该出现在这个列表中,但我试图一次解决一个问题时间)。
SELECT name --Get name where the id is equal to the id in stars in the next step
FROM people
WHERE id = (
SELECT person_id --Get all the star's ids who are in the movies in which Kevin Bacon starred in
FROM stars
WHERE stars.movie_id = (
SELECT movie_id --Get all movie ids where Kevin Bacon starred in
FROM stars
Where stars.person_id = (
SELECT id --Get Kevin Bacon's ID
FROM people
WHERE people.name = "Kevin Bacon" AND birth = 1958)
)
)
我不确定我的代码中哪里出现逻辑错误。还有其他人有类似的问题吗?提前致谢!
这个 SELECT movie_id --Get all movie ids
本质上是 returns KB 主演的 列表 电影。这里 WHERE stars.movie_id = (
它需要 select "list" 中的所有 movie_id
。
同上 WHERE id = (
它需要 select id
person_id
"list".
中的所有 id
您还可以采用变通方法嵌套表达式 WHERE ... IN。因此,您首先分离出 1958 年出生的凯文·贝肯 (Kevin Bacon) 主演的电影 ID。这样,您就可以访问与凯文一起出演电影的人物 ID。
然后,使用人员 table,您可以提取除 Kevin Bacon 之外的所有姓名。它看起来像这样:
SELECT name from people WHERE
id IN (SELECT person_id FROM stars WHERE
movie_id IN (SELECT movie_id FROM stars INNER JOIN people on stars.person_id = people.id
WHERE name = "Kevin Bacon" AND birth = 1958)) AND name != "Kevin Bacon";
我正处于此问题集的最后一步,在获取凯文·培根 (Kevin Bacon) 主演的电影中的主演姓名时遇到了问题。我把这段代码放在一起,它现在只产生一个名字,Steve Guttenberg。根据我在我的代码中的逻辑(我将包括注释)它应该给我所有的名字(是的,我知道 Kevin Bacon 本人最终不应该出现在这个列表中,但我试图一次解决一个问题时间)。
SELECT name --Get name where the id is equal to the id in stars in the next step
FROM people
WHERE id = (
SELECT person_id --Get all the star's ids who are in the movies in which Kevin Bacon starred in
FROM stars
WHERE stars.movie_id = (
SELECT movie_id --Get all movie ids where Kevin Bacon starred in
FROM stars
Where stars.person_id = (
SELECT id --Get Kevin Bacon's ID
FROM people
WHERE people.name = "Kevin Bacon" AND birth = 1958)
)
)
我不确定我的代码中哪里出现逻辑错误。还有其他人有类似的问题吗?提前致谢!
这个 SELECT movie_id --Get all movie ids
本质上是 returns KB 主演的 列表 电影。这里 WHERE stars.movie_id = (
它需要 select "list" 中的所有 movie_id
。
同上 WHERE id = (
它需要 select id
person_id
"list".
id
您还可以采用变通方法嵌套表达式 WHERE ... IN。因此,您首先分离出 1958 年出生的凯文·贝肯 (Kevin Bacon) 主演的电影 ID。这样,您就可以访问与凯文一起出演电影的人物 ID。
然后,使用人员 table,您可以提取除 Kevin Bacon 之外的所有姓名。它看起来像这样:
SELECT name from people WHERE
id IN (SELECT person_id FROM stars WHERE
movie_id IN (SELECT movie_id FROM stars INNER JOIN people on stars.person_id = people.id
WHERE name = "Kevin Bacon" AND birth = 1958)) AND name != "Kevin Bacon";