Questão FC369458
Considere as seguintes tabelas, com suas respectivas colunas, que se relacionam pela coluna FornecedorID: Produto (ProdutoID, ProdutoNome, FornecedorID) Fornecedor (FornecedorID, F
Linguagem SQL
FGV · 2024
Considere as seguintes tabelas, com suas respectivas colunas, que se relacionam pela coluna FornecedorID:
Produto (ProdutoID, ProdutoNome, FornecedorID)
Fornecedor (FornecedorID, FornecedorNome)
Para retornar a lista, sem repetições, de Fornecedores que possuem Produtos com preços menores que 20, deve-se executar o comando SQL:
- SELECT FornecedorNome
FROM Fornecedor
WHERE EXISTS (SELECT ProdutoNome FROM Produto
WHERE Produto.FornecedorID =
Fornecedor.FornecedorID AND Preco < 20)
- SELECT COUNT(FornecedorID), FornecedorNome
FROM Fornecedor, Produto
GROUP BY FornecedorID
HAVING COUNT(Preco) < 20
- SELECT FornecedorNome
FROM Fornecedor
INNER JOIN Produto ON Produto.FornecedorID =
Fornecedor.FornecedorID AND Preco < 20
- SELECT FornecedorNome FROM Fornecedor
UNION
SELECT ProdutoNome FROM Produto
WHERE Preco < 20)
- SELECT FornecedorNome
FROM Fornecedor
WHERE FornecedorID = ANY (
SELECT ProdutoID
FROM Produto WHERE Preco < 20)
Mostrar resposta e comentário
Gabarito
A
Comentário do professor
A consulta principal seleciona FornecedorNome da tabela Fornecedor e usa uma subconsulta correlacionada com EXISTS para testar se existe pelo menos um produto desse fornecedor com preço menor que 20.
A subconsulta verifica: Produto.FornecedorID = Fornecedor.FornecedorID e Preco < 20. Como a subconsulta é correlacionada, ela é avaliada para cada linha de Fornecedor, retornando TRUE se houver algum registro em Produto que satisfaça as condições.
Importante: EXISTS apenas confirma existência (pode usar SELECT 1), e interrompe na primeira linha encontrada, o que evita repetições do mesmo fornecedor no resultado. Assim, a consulta retorna apenas os fornecedores que possuem pelo menos um produto com preço < 20, sem duplicidades.
Conteúdo do catálogo FC Concursos · Atualizado em