De acordo com a definição e instâncias das tabelas T1 e T2 ...
Na questão, considere as tabelas T1 e T2 exibidas a seguir com suas respectivas instâncias.
T1 T2
a b a c
10 A 10 7
11 B 11 9
12 C 15 NULL
14 D
De acordo com a definição e instâncias das tabelas T1 e T2 definidas acima, analise o comando SQL a seguir.
select t2 . a, t2 . c
from T1 left join T2
on t1 . a = t2 . a
Ao ser executado, esse comando produz um resultado contendo quatro linhas, além da linha de títulos.
Assinale a opção que indica o número de células que aparecem
nesse resultado contendo “NULL”.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: E - 4
Para compreender o resultado obtido na execução do comando SQL, é preciso conhecer o conceito de LEFT JOIN que é utilizado para retornar todos os registros da tabela à esquerda (T1), e os registros correspondentes da tabela à direita (T2). Quando não há correspondência, o resultado é NULL na tabela à direita.
Observando as instâncias, temos:
- T1: valores de 'a' são 10, 11, 12, 14
- T2: valores de 'a' são 10, 11, 15
O comando SELECT t2.a, t2.c FROM T1 LEFT JOIN T2 ON t1.a = t2.a vai tentar encontrar correspondentes em T2 para cada 'a' em T1. A tabela resultante terá a seguinte forma:
t2.a | t2.c |
---|---|
10 | 7 |
11 | 9 |
NULL | NULL |
NULL | NULL |
Podemos identificar que:
- Para t1.a = 10 e 11, encontramos correspondentes em T2.
- Para t1.a = 12, não há correspondente em T2, assim o resultado é NULL para t2.a e t2.c.
- Para t1.a = 14, também não há correspondente; portanto, resultado é novamente NULL para t2.a e t2.c.
Contando as células com NULL, temos um total de 4:
- 2 células para t1.a = 12 (t2.a e t2.c)
- 2 células para t1.a = 14 (t2.a e t2.c)
Por isso, a alternativa correta é a E, indicando que haverá 4 células contendo "NULL" no resultado do comando SQL apresentado.
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
Será que alguém poderia explicar como aparecem 4 registros NULL? Ao meu ver, aparecem 2.
Jorge Miranda, também fui na mesma linha de pensamento que você e errei. Olhando novamente a questão eu entendi. É perguntado o número de "células" contendo null. Célula é diferente de linha. Cada célula é uma combinação de linha com coluna. O resultado do select será o seguinte
a c
10 7
11 9
NULL NULL
NULL NULL
Então teremos 2 linhas contendo NULL, porém 4 células contendo NULL.
Marco, obrigado pela ajuda.
Eu acreditava que o resultado não traria nenhuma célula null.
Se fosse
select t1.a, t2.c
from T1 left join T2
on t1.a = t2.a
o resultado seria 2 células Null.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo