Questão FC374547
Considere o conjunto de informações de um banco de dados relacional: tabela1 tabela1pk tabela1col1 tabela1col2 1 AAA 3 2 BBB 4 3 CCC 1 4 DDD 2 tabela2 tabela2pk tabela2col1 tabela2
Linguagem SQL
Instituto Consulplan · 2021
Considere o conjunto de informações de um banco de dados relacional:
| tabela1 |
||
| tabela1pk |
tabela1col1 | tabela1col2 |
| 1 | AAA | 3 |
| 2 | BBB | 4 |
| 3 | CCC | 1 |
| 4 | DDD | 2 |
| tabela2 |
||
| tabela2pk |
tabela2col1 | tabela2col2 |
| 1 | ZZZ | 2 |
| 2 | YYY | 3 |
| 3 | XXX | 4 |
| 4 | WWW | 1 |
| tabela3 |
||
| tabela3pk |
tabela3col1 | tabela3col2 |
| 1 | 1 | 3 |
| 2 | 2 | null |
| 3 | 2 | 4 |
| 4 | null | 1 |
| 5 | null | null |
Os campos tabela1pk; tabela2pk; e, tabela3pk são chaves primárias. A tabela3 é o resultado de um relacionamento N:M entre a tabela1 e a tabela2. Portanto, os campos tabela3col1 e tabela3col2 são, respectivamente, chaves estrangeiras para a tabela1 e a tabela2.
Diante do exposto, considere o resultado de um comando SQL SELECT:
| tabela1col1 |
tabela1col2 | tabela2col1 | tabela2col2 |
| null | null | ZZZ | 2 |
| AAA | 3 | XXX | 4 |
| BBB | 4 | WWW | 1 |
Assinale, a seguir, a alternativa que evidencia o SQL que retorna exatamente ao resultado anterior.
- select
tabela1col1, tabela1col2, tabela2col1, tabela2col2
from tabela3
left join tabela1 on (tabela3col1 = tabela1pk2)
inner join tabela2 on (tabela3col2 = tabela2pk)
- select tabela1col1, tabela1col2, tabela2col1, tabela2col2
from tabela1
right join tabela3 on (tabela1pk = tabela3col1)
inner join tabela2 on (tabela2pk = tabela3col2)
- select tabela1col1, tabela1col2, tabela2col1, tabela2col2
from tabela1
join tabela2 on (tabela1col2 = tabela2col2)
where tabela1col2 >= 3
- select *
from tabela1, tabela2, tabela3
where (tabela1pk = tabela2col1)
and (tabela2pk = tabela3col2)
Mostrar resposta e comentário
Gabarito
B
Comentário do professor
O comando selecionado inicia em tabela1 e aplica um RIGHT JOIN com tabela3 usando a condição (tabela1pk = tabela3col1). Isso garante que todas as linhas de tabela3 apareçam no resultado; quando não há correspondência em tabela1, os campos desta ficam com NULL.
Em seguida aplica-se um INNER JOIN com tabela2 pela condição (tabela2pk = tabela3col2). O INNER JOIN as linhas da etapa anterior, mantendo somente aquelas em que tabela3col2 corresponde a uma chave de tabela2 (linhas com tabela3col2 IS NULL são eliminadas).
Portanto, o resultado final traz: (a) as combinações de tabela1 e tabela2 mediadas por tabela3 quando há correspondência em ambas, e (b) também linhas em que tabela1 é NULL quando tabela3 aponta para tabela2 mas não para tabela1, exatamente como a saída apresentada.
Conteúdo do catálogo FC Concursos · Atualizado em