Cs50 - pset7 - фильмы - 10.sql не прошел тест check50

В настоящее время я работаю над 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 с сообщением об ошибке «Запрос не дал результатов». Я не мог понять, почему. Может ли кто-нибудь сказать мне, что я сделал неправильно? Большое спасибо

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Зачем вам нужно присоединиться к 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.

Ra3L 06.12.2022 05:36

Другие вопросы по теме