FC ConcursosFC Concursos

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.

  1. select

    tabela1col1, tabela1col2, tabela2col1, tabela2col2

    from tabela3

    left join tabela1 on (tabela3col1 = tabela1pk2)

    inner join tabela2 on (tabela3col2 = tabela2pk)

  2. select tabela1col1, tabela1col2, tabela2col1, tabela2col2

    from tabela1

    right join tabela3 on (tabela1pk = tabela3col1)

    inner join tabela2 on (tabela2pk = tabela3col2)

  3. select tabela1col1, tabela1col2, tabela2col1, tabela2col2

    from tabela1

    join tabela2 on (tabela1col2 = tabela2col2)

    where tabela1col2 >= 3

  4. 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

Continue aprendendo