FC ConcursosFC Concursos

Questão FC369563

Considere que você esteja trabalhando com bancos de dados que contêm informações sobre livros e autores utilizando o SGBD SQLServer. Analise o script a seguir. CREATE TABLE #Livros

Sistema de Gerenciamento de Banco de Dados (SGBD)

FGV · 2024

Considere que você esteja trabalhando com bancos de dados que contêm informações sobre livros e autores utilizando o SGBD SQLServer.

 

Analise o script a seguir.

 

CREATE TABLE #Livros (

LivroID INT,

Titulo VARCHAR(100)

);

CREATE TABLE #Autores (

Nome VARCHAR(100),

LivroID INT

);

 

Avalie se os itens a seguir apresentam a escrita correta em uma consulta SQL nesse banco, que faça um JOIN entre as tabelas de livros e autores, em que cada livro é listado junto com uma lista de todos os seus autores (nomes de autores agregados em uma única String).

 

I. SELECT L.Titulo, STRING_AGG(A.Nome, ', ') AS

Autores FROM #Livros L

INNER JOIN #Autores A ON L.LivroID = A.LivroID

GROUP BY L.Titulo;

 

II. SELECT L.Titulo, GROUP_CONTACT(A.Nome, ', ') AS

Autores FROM Livros L

JOIN Autores A ON L.LivroID = A.LivroID

GROUP BY L.AutorID;

 

III. SELECT L.Titulo, STRING_AGG(A.Nome) AS

Autores FROM Livros L

JOIN Autores A ON L.LivroID = A.LivroID

GROUP BY L.Titulo

 

IV. SELECT L.Titulo, STRING_AGG(A.Nome) AS Autores FROM

#Livros L

LEFT JOIN #Autores A ON L.LivroID = A.LivroID

GROUP BY L.Titulo, A.Nome;

 

A escrita dessa consulta SQL está correta em

  1. I, apenas.
  2. IV, apenas.
  3. I e III, apenas.
  4. I e IV, apenas.
  5. I, III e IV.
Mostrar resposta e comentário

Gabarito

A

Comentário do professor

A alternativa I está correta porque utiliza corretamente o agregador nativo do SQL Server para concatenar valores: STRING_AGG(A.Nome, ', '), fornecendo o separador e retornando uma única string com os autores por livro.

O JOIN entre #Livros e #Autores é feito pela chave de relacionamento (LivroID), e a cláusula GROUP BY agrupa os registros por título, permitindo a agregação dos nomes. Em bancos SQL, toda coluna não agregada presente no SELECT deve constar no GROUP BY — aqui L.Titulo atende a essa regra.

Observação prática: é mais robusto agrupar pelo identificador da entidade (por exemplo, LivroID) quando títulos não são únicos. Ainda assim, a sintaxe apresentada na alternativa I é válida e executável no SQL Server.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo