cs50 pset7 13.sql-从结果中删除kevin



UPDATE:我可以通过更改两件事轻松简单地解决这个问题:

  1. 添加到代码末尾:AND people.name != "Kevin Bacon"
  2. 将嵌套查询更改为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年出生的那个(

最新更新