Questão nº 40
Questão de Tecnologia da Informação · FGV TCE-TO 2022 (nº 40)
Considere um banco de dados com três tabelas, T1, T2 e T3, respectivamente com 7, 13 e 19 linhas. Nas três tabelas, a coluna é definida como UNIQUE.
Nessas circunstâncias, a execução do comando SQL
```
SELECT * FROM T1
LEFT JOIN T2 ON T1.A=T2.A
RIGHT JOIN T3 ON T1.A=T3.A
```
deverá produzir um resultado que contenha, além da linha de títulos, no mínimo e no máximo:
- A7 e 13 linhas;
- B13 e 19 linhas;
- C19 e 19 linhas; (alternativa correta)
- D26 e 133 linhas;
- E39 e 1.729 linhas.
Resposta comentada
Gabarito Alternativa C
Conceito-chave: LEFT JOIN mantém todas as linhas da tabela da esquerda (T1) e preenche com NULL quando não há correspondência; RIGHT JOIN mantém todas as linhas da tabela da direita (T3). Como a coluna A é UNIQUE em todas as tabelas, cada valor de A aparece no máximo uma vez em cada tabela, então não há multiplicação de linhas por repetição — o resultado final é sempre o número de linhas da tabela que "manda" no último join.
- (A) Incorreta: 7 e 13 linhas não são possíveis, pois o
RIGHT JOINcom T3 (19 linhas) garante que o resultado tenha pelo menos 19 linhas (todas as de T3 aparecem), nunca menos. - (B) Incorreta: 13 e 19 linhas mistura o tamanho de T2 com T3, mas o
RIGHT JOINfinal é sobre T3, então o mínimo já é 19; o máximo também é 19, pois não há duplicação (UNIQUE impede múltiplas correspondências). - (C) Correta: o
LEFT JOINT1-T2 produz no máximo 7 linhas (todas de T1, comNULLonde não há par em T2). Depois, oRIGHT JOINcom T3 (19 linhas) força todas as 19 linhas de T3 a aparecerem. ComoAé UNIQUE em T3, cada linha de T3 casa com no máximo uma linha do resultado anterior (que também temAúnico), então o resultado final tem exatamente 19 linhas — nem mais, nem menos. - (D) Incorreta: 26 e 133 linhas seriam possíveis se houvesse duplicação de valores em
A(produto cartesiano parcial), masUNIQUEimpede qualquer repetição, então o máximo é 19, não 133. - (E) Incorreta: 39 e 1.729 linhas corresponderiam a somar ou multiplicar os tamanhos das três tabelas (7+13+19=39; 7×13×19=1.729), mas isso só ocorreria sem a restrição
UNIQUEe com joins sem condição de igualdade — aqui a condiçãoONcom coluna única limita tudo a 19.
Armadilha do distrator mais tentador (D): a banca quer que você pense que LEFT JOIN + RIGHT JOIN "soma" ou "multiplica" linhas, mas a restrição UNIQUE na coluna A elimina qualquer repetição — cada valor de A em T3 casa com no máximo uma linha do resultado intermediário, então o total é fixo em 19.
Fonte: FGV TCE-TO 2022 Auditor de Controle Externo - Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.