ATENÇÃO! Na próxima questão, considere as tabelas de banco ...
- T1, com uma única coluna A1, onde A1 é a chave primária;
- T2, com uma única coluna A2, onde A2 é a chave primária, e A2 é também uma chave estrangeira que referencia T1.
As instâncias de T1 e T2 contêm, respectivamente, 12 e 10 linhas.
ATENÇÃO!
Na próxima questão, considere as tabelas de banco de dados:
Com referência às tabelas T1 e T2, descritas anteriormente, o comando SQL
select t1.A1, t2.A2
from T1 t1 LEFT JOIN T2 t2 on t1. A1 = t2.A2
order by 1
produzirá um resultado com
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a C, que indica que o resultado do comando SQL apresentado será de 12 linhas.
O tema central da questão é o entendimento de como as operações de JOIN funcionam em SQL, mais especificamente o LEFT JOIN. Um LEFT JOIN retorna todas as linhas da tabela à esquerda (T1) e as linhas correspondentes da tabela à direita (T2). Quando não há correspondência para uma linha da tabela à esquerda, os resultados para a tabela à direita têm valores NULL.
Considerando que T1 tem 12 linhas e é a tabela à esquerda no LEFT JOIN, e que T2 tem 10 linhas e cada valor de A2 em T2 corresponde a um valor de A1 em T1 (já que A2 é chave estrangeira referenciando a chave primária A1 de T1), o resultado do LEFT JOIN sempre incluirá todas as 12 linhas de T1. Em outras palavras, para cada linha em T1, haverá uma linha no resultado, seja ela correspondente a uma linha em T2 ou preenchida com NULL se a correspondência não existir.
Portanto, mesmo que algumas linhas de T1 não tenham correspondência exata em T2 (o que não é especificado no enunciado), ainda assim o resultado incluirá todas as 12 linhas de T1. É por isso que a resposta é 12 linhas, tornando a alternativa C a correta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
::::Introdução::::
Para não confundir LEFT com RIGHT. Veja uma dica que me fez gravar: LEFT Esquerda // RIGHT Direita. Comparo a primeira vogal que tem em inglês com a primeira em português (dica boba, mas que me ajuda um bocado).
::::Vamos à questão::::
- T1: 12 linhas
- T2: 10 linhas
Veja que foi feito um LEFT JOIN. Esta cláusula é como se adicionasse uma coluna à tabela referenciada, ou seja, a junção visa unir tabelas horizontalmente. Contudo, caso não haja correspondência, é adicionado o NULL. Portanto, gabarito letra C.
b) Estaria correta se o comando fossse "Right Join".
e) estaria correta se fosse "cross join".
>>Em frente e enfrente>>
ira mostrar 12 linhas. as 2 ultimas NULL, NULL
O LEFT JOIN permite obter não apenas os dados relacionados de duas tabelas, mas também os dados não relacionados encontrados na tabela à esquerda da cláusula JOIN. Caso não existam dados relacionados entre as tabelas à esquerda e a direita do JOIN, os valores resultantes de todas as colunas da lista de seleção da tabela à direita serão nulos.
Resultado do SELECT, totalizando 12 linhas:
a1 a2
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 null
12 null
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo