SóProvas


ID
2743375
Banca
FGV
Órgão
MPE-AL
Ano
2018
Provas
Disciplina
Banco de Dados
Assuntos

Considere um banco de dados com uma tabela R1, com atributos A e B, e outra, R2, com atributos A e C.
Sobre elas é preciso preparar uma consulta que retorna os registros de R1 que não têm um registro correspondente em R2, tal que os valores dos atributos A em cada tabela tenham o mesmo valor.
Foram preparados cinco comandos para tal fim, a saber.

select r1.* from r1
where r1.A not in ( select r2.A from r2 );

select r1.* from r1
where not exists ( select * from r2
where r2.A = r1.A );

select r1.* from r1 inner join r2
on r1.A <> r2.A;

select r1.* from r1
where ( select count(*) from r2
where r2.A=r1.A ) = 0;

select r1.* from r1
where r1.A not in
( select A
from ( select A from r1
intersect
select A from r2) x );

Considerando um banco de dados no MS SQL Server ou no Oracle, assinale a opção que indica o comando que não produz esse resultado corretamente.

Alternativas
Comentários
  • Não entrando em maiores detalhes...

    O ponto chave para a questão é  " tal que os valores dos atributos A em cada tabela tenham o mesmo valor."

     

    Observem a condição de associação do terceiro comando "on r1.A <> r2.A;" leia-se "em que os valores da R1.A são diferentes da R2.A", ou seja, contrariando o enunciando, portanto NÃO PRODUZIRÁ O RESULTADO PEDIDO DA QUESTÃO.

     

    GABARITO ALTERNATIVA C

     

  • Questão passiva de anulação.

  • Sobre a letra (C).

    .

    Supondo que ambos T1 e T2 possuam 5 registros e a coluna "A" de ambos variam de 1 a 5.

    Nessa situação, o correto é retornar 0 registros haja vista que todo valor de T1 possui correspondência em T2.

    No entanto, o JOIN da letra C irá fazer o produto cartesiano (5x5=25) excluindo as combinações idênticas de A (1-1, 2-2, 3-3, 4-4, 5-5), retornando 20 registros.

  • http://sqlfiddle.com/#!17/309b07/12