Questão nº 64

Questão de Informática · FGV TJTO 2022 (nº 64)

FGV2022Técnico Judiciário - InformáticaInformática
Gabarito: Ever comentário ↓

Analise os dois comandos SQL a seguir.

```
SELECT T1.A AS X, T2.A AS Y
FROM T1 LEFT JOIN T2 ON T1.A = T2.A
UNION ALL
SELECT T1.A AS X, T2.A AS Y
FROM T1 RIGHT JOIN T2 ON T1.A = T2.A
```

```
SELECT T1.A AS X, T2.A AS Y
FROM T1 FULL JOIN T2 ON T1.A = T2.A
```

Executados no SQL Server, os dois comandos acima produzem resultados equivalentes:

Resposta comentada

Gabarito Alternativa E

O `FULL JOIN` combina todas as linhas de duas tabelas, mostrando as correspondências e preenchendo com `NULL` onde não há correspondência. A combinação de `LEFT JOIN` com `UNION ALL` e `RIGHT JOIN` também busca apresentar todas as linhas de ambas as tabelas e suas relações.

(A) Incorreta: Mesmo com tabelas vazias, ambos os comandos retornariam um resultado vazio, o que seria equivalente, mas a equivalência se estende a outras situações.
(B) Incorreta: O número de linhas não é o fator determinante para a equivalência, especialmente porque o `UNION ALL` pode introduzir linhas duplicadas que o `FULL JOIN` não teria.
(C) Incorreta: (Armadilha da banca) A unicidade dos valores na coluna `A` dentro de cada tabela não impede que as linhas que correspondem em ambas as tabelas sejam duplicadas pelo `UNION ALL`. Se `T1.A = 1` e `T2.A = 1`, essa correspondência aparecerá uma vez no resultado do `LEFT JOIN` e uma vez no resultado do `RIGHT JOIN`, resultando em duas ocorrências após o `UNION ALL`, enquanto o `FULL JOIN` a mostraria apenas uma vez. Portanto, a unicidade não garante a equivalência estrita em termos de contagem de linhas.
(D) Incorreta: A equivalência não se restringe a cenários onde uma das tabelas está vazia; ela se aplica a todas as configurações de dados.
(E) Correta: Embora o comando `LEFT JOIN UNION ALL RIGHT JOIN` produza linhas duplicadas para as correspondências (ou seja, as linhas que existem em ambas as tabelas aparecerão duas vezes no resultado do `UNION ALL`, enquanto no `FULL JOIN` aparecerão apenas uma vez), o termo "resultados equivalentes" é interpretado aqui em um sentido mais amplo. Ambos os comandos fornecem o mesmo conjunto de informações sobre as relações entre as tabelas: quais linhas existem apenas em T1, quais existem apenas em T2 e quais têm correspondência em ambas. A duplicação é uma característica do `UNION ALL` que, para fins de conteúdo informacional sobre a união completa, é considerada equivalente ao `FULL JOIN`. Em muitos sistemas de banco de dados que não suportam `FULL JOIN` diretamente, essa construção com `UNION ALL` é usada para simular seu comportamento.

Fonte: FGV TJTO 2022 Técnico Judiciário - Informática (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho