Я работаю над тремя разными таблицами, которые связаны с актерами, фильмами, в которых они играли, и их ролью в фильме. Моя текущая проблема в том, что я не могу заставить название фильма правильно соотноситься с именем актеров и ролью, которую они играли. Вот мой синтаксис SQL. И скриншот моего вывода. Очевидно, название фильма не соответствует актеру. Например, Роберт Лоджия и АльПачино должны иметь рядом с собой фильм «Лицо со шрамом». Что мне здесь не хватает?

current results

SELECT a.fname, lname, c.characterRole, m.title, salary
FROM Actor a, Castings c, Movie m 
where a.actorID = c.actorId and a.actorID = m.movieId

movies table

-3
hotrod28 15 Сен 2018 в 22:00

2 ответа

Лучший ответ

Во-первых, никогда не используйте запятые в предложении FROM. Всегда используйте правильный, явный, стандартный JOIN синтаксис.

Требуемый запрос выглядит так:

SELECT a.fname, lname, c.characterRole, m.title, salary
FROM Actor a JOIN
     Castings c
     ON a.actorID = c.actorId JOIN
     Movie m 
     ON c.movieId = m.movieId;

Приравнивать actorId и movieId не имеет смысла. Идентификаторы фильмов должны быть связаны с идентификаторами фильмов.

0
Gordon Linoff 15 Сен 2018 в 19:03

Я предполагаю, что таблица Castings имеет идентификатор movieId, который нужно связать с таблицей Movie.

SELECT 
a.fname AS FirstName, 
a.lname AS LastName, 
c.characterRole, 
m.title, 
c.salary
FROM Movie m
JOIN Castings c ON c.movieId = m.movieId
JOIN Actor a ON a.actorID = c.actorId
0
LukStorms 15 Сен 2018 в 19:07