В настоящее время я работаю над 10.sql, который попросил меня найти всех людей, которые сняли фильм, получивший рейтинг не менее 9,0.
Вот схема:
СОЗДАТЬ ТАБЛИЧНЫЕ фильмы (
id INTEGER,
title TEXT NOT NULL,
year NUMERIC,
PRIMARY KEY(id)
);
СОЗДАТЬ ТАБЛИЦУ звезд (
movie_id INTEGER NOT NULL,
person_id INTEGER NOT NULL,
FOREIGN KEY(movie_id) REFERENCES movies(id),
FOREIGN KEY(person_id) REFERENCES people(id)
);
СОЗДАТЬ ТАБЛИЦУ директоров (
movie_id INTEGER NOT NULL,
person_id INTEGER NOT NULL,
FOREIGN KEY(movie_id) REFERENCES movies(id),
FOREIGN KEY(person_id) REFERENCES people(id)
);
СОЗДАТЬ ТАБЛИЦУ оценок (
movie_id INTEGER NOT NULL,
rating REAL NOT NULL,
votes INTEGER NOT NULL,
FOREIGN KEY(movie_id) REFERENCES movies(id)
);
СОЗДАТЬ ТАБЛИЦУ люди (
id INTEGER,
name TEXT NOT NULL,
birth NUMERIC,
PRIMARY KEY(id)
);
Вот код, который я написал:
SELECT DISTINCT name FROM people
JOIN directors ON directors.person_id = people.id
JOIN movies ON movies.id = directors.person_id
JOIN ratings ON ratings.movie_id = movies.id
WHERE ratings.rating >= 9.0;
Когда я работал над sqlite3, он вернул мне список имен. Но он не прошел тест check50 с сообщением об ошибке «Запрос не дал результатов». Я не мог понять, почему. Может ли кто-нибудь сказать мне, что я сделал неправильно? Большое спасибо


Зачем вам нужно присоединиться к movies? Пытаться:
SELECT
name
FROM
people
JOIN directors ON people.id = directors.person_id
JOIN ratings ON directors.movie_id = ratings.movie_id
WHERE
ratings.rating >= 9.0
Спасибо, это работает! Я использовал фильмы для связи между режиссерами и рейтингами, забыл, что у режиссеров есть и person_id, и movie_id.