【发布时间】:2020-01-09 12:36:15
【问题描述】:
我目前正在处理这个https://cs50.harvard.edu/x/2020/psets/7/movies/ 并尝试完成 9.sql。
有一个名为“movies”的数据库,其中包含表格:电影(列:id、title、year)、people(id、name、birth)和 stars(movie_id、person_id)。
任务是:
编写一个 SQL 查询来列出所有在 2004年上映的电影,按出生年份排序。它应该返回 18,013 名字。
到目前为止,这就是我所做的:
SELECT count(distinct name)
from people
join stars on stars.person_id = people.id
join movies on stars.movie_id = movies.id
WHERE year = 2004;
但是,这只会返回 17,965 的计数...
谁能明白为什么会这样?
【问题讨论】:
-
我们如何验证结果?也许这个数字可以反映出一些演员当年拍了几部电影?
-
常春藤联盟大学使用 sqlite 并引用 w3schools...我摇头。
-
可以从这里下载数据库:cdn.cs50.net/2019/fall/psets/7/movies/movies.zip 我也试过不带“distinct”,但这又给了太多名字...
-
我已经验证了你的号码。有趣的问题。
-
如果你
count(distinct person_id),那么你将得到18013。name不是唯一的,这是合理的。不合理的是考试中的指令说你应该只列出name。