cs50 pset7 13.sql - 从结果中删除凯文
cs50 pset7 13.sql - remove kevin from results
更新:我能够通过改变两件事轻松简单地解决这个问题:
- 在代码末尾添加:
AND people.name != "Kevin Bacon"
- 将嵌套查询更改为 movies.id 而不是标题。
感谢这个帖子的回答:
我正处于 PSET7 电影的最后一步 (https://cs50.harvard.edu/x/2020/psets/7/movies/)
目标输出应该是所有和凯文一起出演过电影的人,但不应该包括凯文本人。
我想查询 returns 与凯文·培根一起主演电影的所有人员姓名列表,但凯文在其中。
我怎样才能轻松地将他从结果中删除?
我已经研究过 NOT IN,但我无法弄清楚如何按照我设置的方式让它与嵌套查询一起使用。所以非常感谢任何建议。
这是我的代码:
SELECT DISTINCT people.name
FROM people
INNER JOIN stars ON stars.person_id = people.id
INNER JOIN movies ON movies.id = stars.movie_id
WHERE movies.title IN (
SELECT DISTINCT movies.title
FROM movies
INNER JOIN stars ON stars.movie_id = movies.id
INNER JOIN people ON people.id = stars.person_id
WHERE people.name = "Kevin Bacon" AND people.birth = "1958");
尝试
SELECT name
FROM people
WHERE id IN (SELECT DISTINCT person_id
FROM stars
WHERE movie_id IN (SELECT movie_id
FROM stars
INNER JOIN people
ON stars.person_id = people.id
WHERE people.name = "kevin bacon"
AND people.birth = 1958))
AND NOT ( name = "kevin bacon"
AND birth = 1958 );
说明-
- 第一
SELECT
所有movie_id
“凯文培根”(1958年出生)出演过的
- 现在
SELECT
所有 person_id
出演过上述电影的人
- 现在
SELECT
所有这些人的名字
- 最后,从这个结果中只排除“kevin bacon”(1958 年出生的人)
更新:我能够通过改变两件事轻松简单地解决这个问题:
- 在代码末尾添加:
AND people.name != "Kevin Bacon"
- 将嵌套查询更改为 movies.id 而不是标题。
感谢这个帖子的回答:
我正处于 PSET7 电影的最后一步 (https://cs50.harvard.edu/x/2020/psets/7/movies/) 目标输出应该是所有和凯文一起出演过电影的人,但不应该包括凯文本人。
我想查询 returns 与凯文·培根一起主演电影的所有人员姓名列表,但凯文在其中。 我怎样才能轻松地将他从结果中删除? 我已经研究过 NOT IN,但我无法弄清楚如何按照我设置的方式让它与嵌套查询一起使用。所以非常感谢任何建议。
这是我的代码:
SELECT DISTINCT people.name
FROM people
INNER JOIN stars ON stars.person_id = people.id
INNER JOIN movies ON movies.id = stars.movie_id
WHERE movies.title IN (
SELECT DISTINCT movies.title
FROM movies
INNER JOIN stars ON stars.movie_id = movies.id
INNER JOIN people ON people.id = stars.person_id
WHERE people.name = "Kevin Bacon" AND people.birth = "1958");
尝试
SELECT name
FROM people
WHERE id IN (SELECT DISTINCT person_id
FROM stars
WHERE movie_id IN (SELECT movie_id
FROM stars
INNER JOIN people
ON stars.person_id = people.id
WHERE people.name = "kevin bacon"
AND people.birth = 1958))
AND NOT ( name = "kevin bacon"
AND birth = 1958 );
说明-
- 第一
SELECT
所有movie_id
“凯文培根”(1958年出生)出演过的 - 现在
SELECT
所有person_id
出演过上述电影的人 - 现在
SELECT
所有这些人的名字 - 最后,从这个结果中只排除“kevin bacon”(1958 年出生的人)