Questão de Banco de Dados — SQL — FGV 2023
- Código
- fg071513
- Banca
- FGV
- Órgão
- TCE-SP
- Ano
- 2023
- Nível
- Superior
- Cargo
- Agente da Fiscalização - TI
- A0;
- B2;
- C3;
- D4;
- E6.
GabaritoD — 4;
Gabarito: letra D. O comando SELECT count(*) FROM TX t1 LEFT JOIN TY t2 ON t1.B = t2.A retorna 4, pois o LEFT JOIN preserva todas as linhas da tabela TX (4 registros) e, como nenhum valor de t1.B (2, 1, 2, 2) encontra correspondência em t2.A (0, NULL, NULL, NULL, NULL), cada linha de TX produz uma linha no resultado com os campos de TY como NULL. O COUNT(*) conta todas as linhas do resultado, totalizando 4.
Afirma 0, mas o LEFT JOIN nunca elimina linhas da tabela à esquerda. Como há 4 registros em TX, o resultado tem 4 linhas.
Sugere 2, valor que seria obtido se apenas duas linhas de TX tivessem correspondência. Na verdade, nenhuma linha tem correspondência, mas o LEFT JOIN as mantém.
Indica 3, que é o número de linhas em TY, mas não se aplica à contagem do resultado do LEFT JOIN.
Exatamente 4, conforme demonstrado.
Aponta 6, que seria a soma 4+2 (ou algo similar), mas não corresponde à lógica do LEFT JOIN.
Em LEFT JOIN, o COUNT(*) sempre conta pelo menos o número de linhas da tabela da esquerda. Para contar apenas as que têm correspondência, use COUNT(t2.chave) ou um INNER JOIN.
Gabarito: letra D.
Link permanente: /questoes/fg071513