Analise o comando SQL mostrado a seguir juntamente com a in...

Próximas questões
Com base no mesmo assunto
Q738856 Banco de Dados

Analise o comando SQL mostrado a seguir juntamente com a instância da tabela C.


Imagem associada para resolução da questão

                      

Assinale a opção que apresenta o número de linhas inseridas na tabela C pela execução desse comando.

Alternativas

Comentários

Veja os comentários dos nossos alunos

Fiddle da questão:

http://sqlfiddle.com/#!4/bb6ea/3/0

Alguém poderia explicar o teste de mesa?

SELECT DISTINCT C1.A, C2.B FROM C C1, C C2

-> O produto cartesiano C1xC2 vai gerar 16 registros (4x4)

-> Distinct elimina as redundâncias, então preciso achar as combinações diferentes, resultando em 6 registros:

12 12

12 14

14 12

14 14

16 12

16 14

 

WHERE NOT EXISTS (...)

-> A partir dos 6 registros anteriores, elimino os 4 que já existem na tabela C (representado por "x"), sobrando 2:

12 12

14 14

A semântica desta consulta aninhada com o not exists é a seguinte: Elimina os valores em que não existe uma linha com alguma das combinações de axb.

Ex: Existe alguma linha (12, 14)? SIM

Existe alguma linha (14, 12)? SIM

Existe alguma linha (16, 14)? SIM

Existe alguma linha (16, 12)? SIM

Existe alguma linha (12, 12)? NÃO

Existe alguma linha (14, 14)? NÃO

Como é not exists, só irá retornar TRUE e inserir algo nas duas condições acima.

Pelo fato de ter um distinct as colunas da primeira consulta já são filtradas antes de entrar na subquery.

Dica: Nesse tipo de questão é bom botar as tabelas lado a lado e fazer o produto cartesiano.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo