Объединить 3 разных таблицы в SQL - PullRequest
0 голосов
/ 15 сентября 2018

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

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

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Я предполагаю, что в таблице 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 голосов
/ 15 сентября 2018

Во-первых, никогда не используйте запятые в предложении 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;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...