Usuário com melhor resposta
Juiz do SQL diz que esta incorreto a instrução

Pergunta
-
Ola pessoal, eu estou tentando resolver um SQL bem,
Esquema
movies Coluna Tipo id (PK) numeric name varchar id_genres (FK) numeric
genres Coluna Tipo id (PK) numeric description varchar
actors Coluna Tipo id (PK) integer name varchar movies_actors Coluna Tipo id_movies (FK) numeric id_actors (FK) numeric Tabelas
movies id name id_genres 1 Batman 3 2 The Battle of the Dark River 3 3 White Duck 1 4 Breaking Barriers 4 5 The Two Hours 2 genres id description 1 Animation 2 Horror 3 Action 4 Drama 5 Comedy actors id name 1 Brad Antonio 2 Marcelo Silva 3 Miguel Silva 4 Drake Frost 5 Rodrigo Juares Rodriguez
movies_actors id_movies id_actors 1 1 2 3 2 2 4 1 5 2
A saída é
Para fazer isso, selecione o código e o nome dos filmes em que atuaram os atores ‘Marcelo Silva’ ou ‘Miguel Silva’ e que o gênero do filme seja 'Action'.]
id name 2 The Battle of the Dark River MINHA INSTRUÇÃO SQL
SELECT MOVIES.ID, MOVIES.NAME FROM GENRES INNER JOIN MOVIES ON MOVIES.ID_GENRES = GENRES.ID INNER JOIN MOVIES_ACTORS ON MOVIES_ACTORS.ID_MOVIES = MOVIES.ID INNER JOIN ACTORS ON MOVIES_ACTORS.ID_ACTORS = ACTORS.ID WHERE ACTORS.NAME = 'Marcelo Siva' OR ACTORS.NAME = 'Miguel Silva' AND GENRES.DESCRIPTION = 'Action';
O resultado é igualzinho da saída em meus teste, queria saber a onde eu estou errando.
<><><><><><><><><><><><><><><><><><><><><<><><><><><><><><><><><><><><><><><>
Vou deixar o código para algum possível teste:
CREATE TABLE genres ( id numeric (10) PRIMARY KEY, description varchar(50) ); CREATE TABLE movies ( id numeric (10) PRIMARY KEY, name varchar(50), id_genres numeric REFERENCES genres (id) ); CREATE TABLE actors ( id numeric (10) PRIMARY KEY, name varchar(50) ); CREATE TABLE movies_actors ( id_movies numeric REFERENCES movies (id), id_actors numeric REFERENCES actors (id) ); INSERT INTO genres (id, description) VALUES (1, 'Animation'); INSERT INTO genres (id, description) VALUES (2, 'Horror'); INSERT INTO genres (id, description) VALUES (3, 'Action'); INSERT INTO genres (id, description) VALUES (4, 'Drama'); INSERT INTO genres (id, description) VALUES (5, 'Comedy'); INSERT INTO movies (id, name, id_genres) VALUES (1, 'Batman', 3); INSERT INTO movies (id, name, id_genres) VALUES (2, 'The Battle of the Dark River', 3); INSERT INTO movies (id, name, id_genres) VALUES (3, 'White Duck', 1); INSERT INTO movies (id, name, id_genres) VALUES (4, 'Breaking Barriers', 4); INSERT INTO movies (id, name, id_genres) VALUES (5, 'The Two Hours', 2); INSERT INTO actors (id, name) VALUES (1, 'Brad Antonio'); INSERT INTO actors (id, name) VALUES (2, 'Marcelo Silva'); INSERT INTO actors (id, name) VALUES (3, 'Miguel Silva'); INSERT INTO actors (id, name) VALUES (4, 'Drake Frost'); INSERT INTO actors (id, name) VALUES (5, 'Rodrigo Juares Rodriguez'); INSERT INTO movies_actors (id_movies, id_actors) VALUES (1,1); INSERT INTO movies_actors (id_movies, id_actors) VALUES (2,3); INSERT INTO movies_actors (id_movies, id_actors) VALUES (2,2); INSERT INTO movies_actors (id_movies, id_actors) VALUES (4,1); INSERT INTO movies_actors (id_movies, id_actors) VALUES (5,2);
- Editado salomão santos sexta-feira, 18 de maio de 2018 00:13
Respostas
-
- Marcado como Resposta salomão santos terça-feira, 22 de maio de 2018 20:01
Todas as Respostas
-
Faz um teste
SELECT MOVIES.ID, MOVIES.NAME, * FROM GENRES INNER JOIN MOVIES ON MOVIES.ID_GENRES = GENRES.ID INNER JOIN MOVIES_ACTORS ON MOVIES_ACTORS.ID_MOVIES = MOVIES.ID INNER JOIN ACTORS ON MOVIES_ACTORS.ID_ACTORS = ACTORS.ID WHERE (ACTORS.NAME = 'Marcelo Silva' OR ACTORS.NAME = 'Miguel Silva') AND GENRES.DESCRIPTION = 'Action';
-
- Marcado como Resposta salomão santos terça-feira, 22 de maio de 2018 20:01
-
Na sua query o sobrenome ator Marcelo esta errado, por isso só carrega uma linha
WHERE ACTORS.NAME = 'Marcelo Siva'
- Editado Carlos_rodrigues sexta-feira, 18 de maio de 2018 02:23 correção
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 22 de maio de 2018 12:37
-
Carlos obrigado pela ajuda,
Aprendi que eu não posso seguir o exemplo de saída desses exercícios, pois olhando as tabelas percebi que era para exibir três resultados
2 The Battle of the Dark River
2 The Battle of the Dark River
5 The Two Hourso
Pois um dos atores fez o filme "The Two Hours" Graças a sua atenção no meu erro de ortografia (que eu não estava vendo por nada de tão viciado), conseguir enxergar a solução olhando a tabela MOVIES_ACTORS
- Editado salomão santos terça-feira, 22 de maio de 2018 20:10
-
José, no caso em específico, não posso usar DISTINCT, os resultados é para repetir mesmo.
O exemplo de saída não é claro em relação o que pede, olhe na tabela MOVIE_ACTORS e observe que o resultado é mais completo do que pede da saída.
- Editado salomão santos terça-feira, 22 de maio de 2018 20:14
-