UPDATE:我可以通过更改两件事轻松简单地解决这个问题:
- 添加到代码末尾:
AND people.name != "Kevin Bacon"
- 将嵌套查询更改为movies.id,而不是title
感谢这个线程的答案:CS50 Pset 7 13.sql,我可以';无法解决此问题,嵌套sqlite3数据库
我正处于PSET7电影的最后一步(https://cs50.harvard.edu/x/2020/psets/7/movies/)目标输出应该是所有与凯文一起出演过电影的人,但凯文本人不应该包括在内。
我有一个查询,它返回了与凯文·培根一起出演电影的所有人的名单,但凯文在那里。我怎样才能轻易地将他从结果中删除?我已经研究过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 );
说明-
- 第一个CCD_ 2所有CCD_;kevin培根"(1958年出生的那个(主演了
- 现在
SELECT
所有person_id
都曾出演过上述电影 - 现在
SELECT
所有这些人的名字 - 最后,只排除";kevin培根"(1958年出生的那个(