SóProvas


ID
1028794
Banca
FEPESE
Órgão
JUCESC
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Considere a necessidade de realizar uma consulta SQL que combine resultados de três relações, com o objetivo de retornar todos os registros da primeira relação do SELECT, os registros correspondentes da segunda relação e todos os registros da terceira.

Assinale a alternativa que indica as instruções SQL que devem ser utilizadas entre as relações, respectivamente, e que melhor se aproximam da obtenção do resultado desejado.

Alternativas
Comentários
  • Entendendo LEFT, RIGHT e INNER

    Quando dizemos que a tabela será Left ou Right, estamos informando ao comando SQL que ele deve obedecer o sentido para a Direita ou para a Esquerda, ou seja, ao utilizarmos Left Join o banco de dados irá analisar a estrutura da tabela da Direita e comparar com a tabela da Esquerda (leia-se Direita para a Esquerda), veja o desenho.

    Left e Right Join


    Fonte:

    http://www.prosige.com.br/portal/index.php?option=com_content&view=article&id=58:diferenca-entre-left-right-e-inner-join&catid=1:bancodedados&Itemid=55

  • Uma forma que encontrei de não confundir mais foi traduzindo literalmente (fica feio):

    LEFT JOIN -> (ESQUEDA JUNTA COM)
    RIGHT JOIN -> (DIREITA JUNTA COM)

  • Para seguir a risca o enunciado não podemos fazer um RIGHT JOIN, pois o enunciado solicita que sejam apresentados "todos" os registros da tabela 1. Se fizermos como sugerido na resposta:

    tabela1 LEFT JOIN tabela2 RIGHT JOIN tabela 3

    Ao fazer o RIGHT JOIN poderíamos perder registros da tabela 1. Acredito que a resposta correta seria:

    (tabela 1 LEFT JOIN tabela 2) FULL OUTER JOIN tabela 3

    Se estiver utilizando o MySQL, não existe FULL OUTER JOIN, então teríamos que fazer algo assim:

    ((tabela 1 LEFT JOIN tabela 2) LEFT JOIN tabela3) UNION ((tabela 1 LEFT JOIN tabela 2) RIGHT JOIN tabela3)

  • Complementando os comentários, para entender os Joins do SQL:

    https://www.w3schools.com/sql/sql_join.asp