【发布时间】:2021-01-25 08:31:47
【问题描述】:
我目前正在尝试查找所有导演过评分至少为 9.0 的电影的人的姓名 这些表的方案是
CREATE TABLE movies (
id INTEGER,
title TEXT NOT NULL,
year NUMERIC,
PRIMARY KEY(id)
);
CREATE TABLE stars (
movie_id INTEGER NOT NULL,
person_id INTEGER NOT NULL,
FOREIGN KEY(movie_id) REFERENCES movies(id),
FOREIGN KEY(person_id) REFERENCES people(id)
);
CREATE TABLE directors (
movie_id INTEGER NOT NULL,
person_id INTEGER NOT NULL,
FOREIGN KEY(movie_id) REFERENCES movies(id),
FOREIGN KEY(person_id) REFERENCES people(id)
);
CREATE TABLE ratings (
movie_id INTEGER NOT NULL,
rating REAL NOT NULL,
votes INTEGER NOT NULL,
FOREIGN KEY(movie_id) REFERENCES movies(id)
);
CREATE TABLE people (
id INTEGER,
name TEXT NOT NULL,
birth NUMERIC,
PRIMARY KEY(id)
);
我的 SQL 查询是:
SELECT DISTINCT name FROM people
WHERE id IN ( SELECT person_id FROM directors WHERE movie_id IN (
SELECT id FROM movies WHERE id IN (
SELECT movie_id FROM ratings WHERE votes >= 9.0)));
但是,这未通过 check50 测试,并给出不正确的输出。谁能帮我解决我哪里出错了?
【问题讨论】:
-
DISTINCT不是一个函数,它是SELECT DISTINCT的一部分 - 并且适用于整个选定的行。去掉那些多余的括号,直接写SELECT DISTINCT name FROM ...让代码更清晰。