Questão FC295897
O que pode explicar corretamente a quantidade diferente de linhas nas consultas realizadas?
Linguagem SQL
CESGRANRIO · 2021
Para gerar um gráfico de dispersão, um programador precisava consultar duas tabelas, T1 e T2. Ele decidiu, então, usar um LEFT JOIN, como em
SELECT * FROM T1 LEFT JOIN T2 USING (CHAVE);
Essa consulta resultou em 214 linhas.
Por motivos de segurança, ele fez outra consulta semelhante, apenas trocando o LEFT JOIN por um JOIN, e essa segunda consulta resultou em 190 linhas.
O que pode explicar corretamente a quantidade diferente de linhas nas consultas realizadas?
- CHAVE é a chave primária de T1, mas apenas um campo da chave primária de T2.
- CHAVE é a chave primária de T2, mas apenas um campo da chave primária de T1.
- T1 possui linhas cujo valor de CHAVE não está presente na T2.
- T2 possui linhas cujo valor de CHAVE não está presente na T1.
- T2 possui linhas com todas as chaves presentes em T1, mas com campos nulos.
Mostrar resposta e comentário
Gabarito
Certo
Comentário do professor
O resultado diferente se explica porque o comando usa USING(CHAVE), ou seja, a junção é feita pelo valor da CHAVE.
Um LEFT JOIN traz todas as linhas da tabela da esquerda (T1) e, quando não há correspondência em T2, preenche as colunas de T2 com NULL. Como esse SELECT retornou 214 linhas, a operação preservou todas as entradas de T1.
Já o JOIN (INNER JOIN) só retorna as linhas que têm correspondência em ambas as tabelas. Ele produziu 190 linhas, ou seja, existem apenas 190 chaves que aparecem em ambas.
Portanto há \(214 - 190 = 24\) linhas de T1 cuja CHAVE não está presente em T2; essas linhas aparecem no LEFT JOIN (com campos de T2 nulos) e são excluídas no JOIN.
Conteúdo do catálogo FC Concursos · Atualizado em