A recursividade presente em consultas realizadas com SQL na ...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a C - da junção interna – INNER JOIN.
Para entender a questão, é necessário compreender os conceitos de recursividade em consultas SQL e os diversos tipos de junções (joins) que podem ser aplicadas para se obter dados de uma ou mais tabelas em um banco de dados.
Na consulta SQL apresentada, temos um exemplo de subconsulta, na qual selecionamos registros da tabela 'a' onde uma condição depende dos resultados de uma segunda consulta à tabela 'b'. Esse tipo de consulta pode ser complexo e ineficiente, por isso muitas vezes buscamos maneiras de torná-las mais diretas e performáticas.
A alternativa correta, INNER JOIN, é uma abordagem que permite que você combine linhas de duas ou mais tabelas com base em uma condição de correspondência. Dessa forma, você elimina a necessidade de subconsultas recursivas, pois pode fazer a verificação da condição diretamente no momento da junção.
Usar INNER JOIN é efetivo porque permite que você:
- Filtre e relacione as linhas entre as tabelas de forma direta;
- Evite subconsultas que podem ser redundantes e menos eficientes;
- Escreva uma consulta mais legível e muitas vezes com melhor desempenho.
Assim, aplicar INNER JOIN ao invés de subconsultas permite uma consulta mais enxuta e performática, aderindo ao objetivo da questão que é evitar a recursividade na consulta SQL.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Alternativa correta: C.
A query quer os valores que as tabelas têm em comum somente. Para isso você precisa de um inner join. Lembrando que, de acordo com o comando da questão, deve-se evitar a recursividade (consulta dentro de consulta).
a) ERRADA: IN e EXISTS vão fazer coisas similares, além de ambos promoverem uma segunda consulta (recursividade) dentro da primeira;
b) ERRADA: a questão não quer elementos que não tenham relação entre si. Sendo assim, NÃO se deve preservar os valores de nenhuma das colunas que não tenham correlação com nenhum valor da outra coluna (LEFT e RIGHT JOIN estão descartados).
c) GABARITO;
d) ERRADA: idem B. Além disso, juntar com o valor NULL vai trazer elementos que NÃO têm correlação;
e) ERRADA: CTE vai realizar uma consulta recursiva (https://docs.microsoft.com/pt-br/sql/t-sql/queries/with-common-table-expression-transact-sql?view=sql-server-2017).
Oi!
Gabarito: C
Bons estudos!
-Estude como se a prova fosse amanhã.
Vamos pensar um pouquinho: quando temos consultas aninhadas com o operador IN, queremos saber se valores do SELECT externo coincidem com valores do SELECT interno. Quem faz exatamente a mesma coisa? INNER JOIN! Ele retorna elementos em comum entre dois conjuntos!
c-
SELECT a.id,... FROM a WHERE ... IN (SELECT atributo FROM b WHERE b.x=a.id)
equiavle a
da junção interna – INNER JOIN.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo