Considere um banco de dados com três tabelas, T1, T2 e T3, ...
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:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Resposta Correta: C - 19 e 19 linhas.
Para entender essa questão é necessário ter conhecimento sobre operações de junção (JOIN) em SQL. A junção é uma operação fundamental em bancos de dados que combina colunas de duas ou mais tabelas, baseando-se em uma relação entre elas, geralmente um campo em comum.
No caso do comando SQL apresentado, estamos lidando com duas junções: um LEFT JOIN entre as tabelas T1 e T2, e um RIGHT JOIN entre as tabelas T1 e T3.
O LEFT JOIN inclui todas as linhas da tabela à esquerda (T1) e as linhas correspondentes da tabela à direita (T2). Caso não haja correspondência, os resultados da tabela à direita terão valores nulos. Já o RIGHT JOIN, faz o oposto, incluindo todas as linhas da tabela à direita (T3) e as correspondentes da tabela à esquerda (T1), com valores nulos para as não correspondentes da tabela à esquerda.
O cerne da questão está em compreender que, ao realizar um RIGHT JOIN após um LEFT JOIN, a quantidade de linhas resultantes será determinada pelo RIGHT JOIN, já que ele garante que todas as linhas da tabela à direita (T3) apareçam no resultado.
Como a tabela T3 tem 19 linhas e a coluna é definida como UNIQUE, não haverá linhas duplicadas de T3 no resultado. Assim, o número mínimo e máximo de linhas no resultado final será a quantidade de linhas de T3, ou seja, 19 linhas.
A alternativa C está correta pois independentemente das combinações possíveis entre T1 e T2 através do LEFT JOIN, o RIGHT JOIN com T3 assegura que cada linha única de T3 seja representada. Isso significa que teremos no mínimo e no máximo 19 linhas no conjunto de resultados final, uma para cada linha de T3.
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
RIGHT JOIN pega todas as linhas de T3.
Como há 19 linhas em T3, o número mínimo de linhas é 19, a única alternativa com 19 como mínimo é a C.
Como são todas UNIQUE, elas não repetem nas tabelas, então, no máximo também haverá 19 linhas.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo