SóProvas


ID
2936818
Banca
NC-UFPR
Órgão
ITAIPU BINACIONAL
Ano
2019
Provas
Disciplina
Banco de Dados
Assuntos

A recursividade presente em consultas realizadas com SQL na forma SELECT a.id,... FROM a WHERE ... IN (SELECT atributo FROM b WHERE b.x=a.id) pode ser evitada por meio:

Alternativas
Comentários
  • 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!