ATENÇÃO! Na próxima questão, considere as tabelas de banco ...

Próximas questões
Com base no mesmo assunto
Q1902418 Banco de Dados


- 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

Alternativas

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