Pular para o conteúdo principal

Questão de Banco de Dados — SQL — Quadrix 2024

Banco de DadosSQL
Código
qg354215
Banca
Quadrix
Órgão
IBICT
Ano
2024
Nível
Superior
Cargo
Tecnologista - Tecnologia da Informação
Com relação ao código SQL acima, no SGBD MySQL, julgue o item. Para mostrar todos os artigos publicados na revista RECEN, juntamente com seus autores, pode‑se utilizar o comando seguir. SELECT Artigos.Titulo AS TituloArtigo, Autores.Nome AS NomeAutor FROM Artigos INNER JOIN Autores ON Autor_Artigo.AutorID = Autores.AutorID WHERE Artigos.RevistaID = (SELECT RevistaID FROM Revistas WHERE Nome = ‘NomeDaRevista‘);
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
SE LIGUE NESSA!

Esta questão depende de um texto-base/tabela compartilhado com outras questões da mesma prova, e esse texto não está disponível. Os dados que faltam (valores, tabela, RCL, datas do caso) estão nele. O raciocínio abaixo é o método — confira os valores na imagem original.

SQL: INNER JOIN e subconsulta

Gabarito: ERRADO (letra E). O comando SQL apresentado contém um erro de sintaxe na cláusula INNER JOIN: a condição de junção referencia a tabela Autor_Artigo, que não está incluída no FROM. Para que a consulta funcione, a tabela Autor_Artigo (que faz a ligação entre Artigos e Autores) precisa ser adicionada ao FROM e a condição de junção deve ser ajustada. A subconsulta WHERE Artigos.RevistaID = (SELECT RevistaID FROM Revistas WHERE Nome = 'NomeDaRevista') está correta, mas o JOIN está mal formado.

O comando SQL apresentado tem a intenção de listar os títulos dos artigos de uma revista específica (RECEN) junto com os nomes de seus autores. Para isso, ele usa um INNER JOIN entre as tabelas Artigos e Autores, e uma subconsulta para filtrar a revista. Vamos analisar a estrutura:

  • SELECT Artigos.Titulo AS TituloArtigo, Autores.Nome AS NomeAutor: seleciona as colunas desejadas, com apelidos (AS).

  • FROM Artigos: a consulta começa na tabela Artigos.

  • INNER JOIN Autores ON Autor_Artigo.AutorID = Autores.AutorID: aqui está o problema. A condição de junção usa a coluna Autor_Artigo.AutorID, mas a tabela Autor_Artigo não está listada no FROM. Em SQL, toda tabela referenciada na condição de junção deve estar presente no FROM (ou em um JOIN anterior). Como Autor_Artigo não está no FROM, o comando gera um erro de sintaxe.

Para corrigir, seria necessário incluir a tabela Autor_Artigo no FROM e fazer a junção em duas etapas: primeiro Artigos com Autor_Artigo, e depois Autor_Artigo com Autores. Por exemplo:

SELECT Artigos.Titulo AS TituloArtigo, Autores.Nome AS NomeAutor
FROM Artigos
INNER JOIN Autor_Artigo ON Artigos.ArtigoID = Autor_Artigo.ArtigoID
INNER JOIN Autores ON Autor_Artigo.AutorID = Autores.AutorID
WHERE Artigos.RevistaID = (SELECT RevistaID FROM Revistas WHERE Nome = 'NomeDaRevista');

A subconsulta WHERE Artigos.RevistaID = (SELECT RevistaID FROM Revistas WHERE Nome = 'NomeDaRevista') está correta: ela filtra os artigos cuja revista tem o nome especificado. No entanto, o JOIN está mal formado, o que torna o comando inválido.

NÃO CAIA NESSA!

A banca troca a tabela que faz a ligação (Autor_Artigo) pela tabela Autores na condição de junção, sem incluí-la no FROM. O candidato pode achar que o comando está correto porque a subconsulta está certa, mas o JOIN está errado. Fique atento: toda tabela usada na condição de junção deve estar no FROM.

  1. 1SELECT colunas desejadas
  2. 2FROM Artigos
  3. 3JOIN Autores (sem Autor_Artigo no FROM)
  4. 4WHERE subconsulta correta
LEVEL · soulevel.com.br

Item — ❌ Errado

O comando SQL apresentado está errado porque a condição de junção ON Autor_Artigo.AutorID = Autores.AutorID referencia a tabela Autor_Artigo, que não está incluída no FROM. Em SQL, para usar uma tabela em uma junção, ela deve estar listada no FROM (ou em um JOIN anterior). Como Autor_Artigo não está presente, o comando gera um erro de sintaxe e não executa.

Para que a consulta funcione, seria necessário incluir Autor_Artigo no FROM e fazer a junção em duas etapas, como mostrado acima. A subconsulta WHERE Artigos.RevistaID = (SELECT RevistaID FROM Revistas WHERE Nome = 'NomeDaRevista') está correta, mas o JOIN está mal formado, o que torna o comando inválido.

NÃO CAIA NESSA!

Ao analisar comandos SQL com JOIN, verifique se todas as tabelas referenciadas na condição de junção estão presentes no FROM. Se houver uma tabela de ligação (como Autor_Artigo), ela deve ser incluída explicitamente. Essa é uma pegadinha comum em provas de banco de dados.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/qg354215