X ...
a b c d
1 2 1 2
3 3 3 4
4 5 5 6
5 7 7 8
9 1
select *
from x left join y on x.a=y.c
order by x.a
Considerando-se as tabelas e o comando SQL mostrados acima, é correto concluir que esse comando produz:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: D
A questão aborda o conceito de JOIN em SQL, que é fundamental para realizar consultas que combinem dados de duas ou mais tabelas. O tipo de JOIN utilizado aqui é o LEFT JOIN, que retorna todos os registros da tabela à esquerda (nesse caso, X) e os registros correspondentes da tabela à direita (Y). Quando não há correspondência, os resultados da tabela à direita têm valores NULL.
Para resolver essa questão, é necessário compreender como a condição de união especificada na cláusula ON afeta o resultado. A condição x.a = y.c
define que as linhas das tabelas X e Y serão combinadas quando o valor na coluna a da tabela X for igual ao valor na coluna c da tabela Y.
Analizando as tabelas fornecidas e aplicando o comando SQL, temos o seguinte cenário:
- Para x.a = 1: Encontramos correspondência em y.c = 1, então as linhas são combinadas (1, 2, 1, 2).
- Para x.a = 3: Encontramos correspondência em y.c = 3, combinando as linhas (3, 3, 3, 4).
- Para x.a = 4: Não encontramos correspondência em y.c, então o resultado para a tabela Y é NULL (4, 5, NULL, NULL).
- Para x.a = 5: Encontramos correspondência em y.c = 5, combinando as linhas (5, 7, 5, 6).
O resultado final, após a aplicação do LEFT JOIN e ordenação pelo ORDER BY x.a
, é a combinação das linhas das duas tabelas baseada na condição de união, incluindo uma linha com valores NULL para a tabela da direita quando não há correspondência, como acontece com o valor 4 da tabela X.
Portanto, a alternativa correta (D) é aquela que reflete corretamente o resultado do comando SQL fornecido, representando todos os registros da tabela X e os registros correspondentes ou valores NULL da tabela Y quando não há correspondência.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo