Ed
há 3 semanas
Vamos analisar cada alternativa para identificar qual contém o comando SQL correto para listar os funcionários que possuem dependentes cadastrados: A) ```sql SELECT Funcionarios.nome, Funcionarios.cargo, Funcionarios.salario FROM Funcionarios WHERE Funcionarios.id_funcionario IN (SELECT id_funcionario FROM Dependentes GROUP BY id_funcionario); ``` - Correto. O subselect retorna os funcionários que têm dependentes, o GROUP BY é redundante, mas não incorreto. B) ```sql SELECT Funcionarios.nome, Funcionarios.cargo, Funcionarios.salario FROM Funcionarios WHERE Funcionarios.id_funcionario NOT IN SELECT id_funcionario FROM Dependentes ); ``` - Incorreto. Falta um parêntese após NOT IN e o uso de NOT IN indica funcionários sem dependentes, mas a questão quer os que possuem dependentes. Além disso, a sintaxe está errada (falta parêntese no subselect). C) ```sql SELECT Funcionarios.nome, Funcionarios.cargo, Funcionarios.salario FROM Funcionarios INNER JOIN Dependentes ON Funcionarios.id_funcionario = Dependentes.id_funcionario; ``` - Correto. INNER JOIN retorna apenas funcionários que possuem dependentes. D) ```sql SELECT Funcionarios.nome, Funcionarios.cargo, Funcionarios.salario FROM Funcionarios WHERE EXISTS (SELECT 1 FROM Dependentes WHERE Funcionarios.id_funcionario = Dependentes.id_funcionario); ``` - Correto. EXISTS verifica se há dependentes para o funcionário. E) ```sql SELECT DISTINCT Funcionarios.nome, Funcionarios.cargo, Funcionarios.salario FROM Funcionarios LEFT JOIN Dependentes ON Funcionarios.id_funcionario = Dependentes.id_funcionario WHERE Dependentes.id_dependente IS NOT NULL; ``` - Correto. LEFT JOIN com filtro para dependentes não nulos retorna funcionários com dependentes. Conclusão: A alternativa incorreta é a B, pois possui erro de sintaxe e lógica contrária ao solicitado. Resposta correta: B
Cadastre-se ou realize login