Ed
semana passada
Vamos analisar o que a consulta precisa fazer: - Listar produtos que já foram vendidos (ou seja, que aparecem na tabela ItensPedido). - Que atualmente não possuem estoque disponível (quantidade_estoque = 0). Agora, vamos analisar as alternativas: A) Faz um INNER JOIN com um subselect que agrupa os produtos vendidos (com SUM(quantidade) > 0) e filtra produtos com estoque zero. Parece correta, pois garante que o produto foi vendido (aparece em ItensPedido com quantidade > 0) e está com estoque zero. B) Seleciona produtos com estoque zero e que estão na lista de produtos da tabela ItensPedido (sem agrupar ou somar quantidades). Pode funcionar, mas não verifica se a quantidade vendida é maior que zero, embora isso seja implícito, já que se está em ItensPedido, foi vendido. C) Faz INNER JOIN direto entre Produtos e ItensPedido, filtrando estoque zero. Pode gerar linhas duplicadas se o produto foi vendido várias vezes, mas ainda assim retorna os produtos vendidos com estoque zero. D) Usa WHERE EXISTS para verificar se o produto está em ItensPedido e estoque zero. É uma forma eficiente e correta de garantir que o produto foi vendido e está sem estoque. E) Usa LEFT JOIN e filtra por ItensPedido.id_pedido IS NOT NULL, o que equivale a um INNER JOIN, e estoque zero. Também correto. Entre essas, as opções A, D e E são corretas, mas a mais clara e eficiente para o objetivo é a D, que usa EXISTS para verificar a existência de vendas e filtra produtos com estoque zero. Resposta correta: D) SELECT Produtos.* FROM Produtos WHERE Produtos.quantidade_estoque = 0 AND EXISTS ( SELECT 1 FROM ItensPedido WHERE ItensPedido.id_produto = Produtos.id_produto );
Cadastre-se ou realize login