Analise o comando SQL mostrado a seguir juntamente com a in...
Analise o comando SQL mostrado a seguir juntamente com a instância da tabela C.
Assinale a opção que apresenta o número de linhas inseridas na
tabela C pela execução desse comando.
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