12
Modelagem e Implementação de Banco de Dados Prof. Ari Oliveira SAP HANA 14 : Tipos de JOIN

Modelagem e Implementação de Banco de Dados SAP HANA de Dados/SAP HANA/SQL/14-Tipos de JOIN.pdf · Modelagem e Implementação de Banco de Dados Prof. Ari Oliveira SAP HANA 14:

  • Upload
    phamanh

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

Modelagem e Implementação de

Banco de Dados

Prof. Ari Oliveira

SAP HANA14: Tipos de JOIN

22

TIPOS DE JOIN

SELECT campos FROM tabela1TIPO JOIN tabela2

ON estrangeiratabela1 = primariatabela2

• Tipos mais usados:– INNER JOIN– LEFT OUTER JOIN– RIGHT OUTER JOIN– FULL OUTER JOIN– CROSS JOIN

• Para melhor compreender os tipos possíveis, demonstraremos com exemplos

33

FUNCIONÁRIOS E CARGOS

• Podemos notar pelo modelo que pode existir no banco de dados funcionários sem cargos e cargos sem funcionários. Para exemplificar melhor, observe o conteúdo das tabelas a seguir

44

TB_CARGOS

TB_FUNCIONÁRIOS

55

INNER JOIN

• Para juntar duas ou mais tabelas por coincidência. Para cada linha da tabela FUNCIONÁRIOS queremos o CARGO correspondente que internamente (INNER), em seus valores de atributos, coincidam. No caso de FUNCIONÁRIO e CARGO os atributos internos coincidentes são CAR_CODIGO na tabela TB_CARGOS e FUN_CAR_CODIGO na tabela TB_FUNCIONARIOS.

• CAR_CODIGO é chave primária da tabela TB_CARGOS e chave estrangeira na tabela TB_FUNCIONARIOS. Para efetivarmos a junção das duas tabelas se fará necessário ligar (ON) as duas tabelas por seus atributos internos (INNER) coincidentes.

• Este comando é igual ao JOIN natural, ou seja, tanto faz usar apenas JOIN quanto INNER JOIN!

66

LEFT JOIN

• Observando a tabela TB_FUNCIONARIOS notamos que o funcionário Gonofredo não possui cargo. Se desejarmos listar todos os funcionários com seus respectivos cargos, incluindo os funcionários sem cargos, a exemplo de Gonofredo, poderíamos usar todo o poder da junção INNER JOIN adicionando ainda outros funcionários que não fazem parte do INNER JOIN. Podemos conseguir esse feito com a junção FUNCIONARIO/CARGO através da declaração FUNCIONARIO LEFT JOIN CARGO, que promove a junção interna (INNER) de todos os funcionários a cargos e lista ainda outros (EXTERNOS) não associados.

77

Esquerda (left) Direita (right)

SELECT FUN_NOME, CAR_CARGOFROM TB_FUNCIONARIOS

LEFT JOIN TB_CARGOS on CAR_CODIGO = FUN_CAR_CODIGO

88

RIGHT JOIN

• Observando a tabela CARGOS notamos que o cargo GERENTE, com código 3, não é referenciado/associado por/a nenhum funcionário na tabela FUNCIONARIOS. Se desejarmos listar todos os CARGOS e seus respectivos FUNCIONARIOS, incluindo os CARGOS sem FUNCIONÁRIOS, poderíamos usar a junção RIGTH JOIN.

99

OUTROS TIPOS

• FULL OUTER JOIN é a ligação completa, com itens sem correspondência tanto na esquerda como na direita. Não suportado pelo MySQL

• CROSS JOIN é a união de todos com todos. Ou seja, por exemplo poderíamos listar todos os clientes com todos os bairros. Não é necessário informar as colunas de ligação.

– SELECT * FROM TB_CLIENTES CROSS JOIN TB_BAIRROS

1010

UTILIZAÇÃO PRÁTICA

• Devemos escolher o tipo que satisfaça as necessidades da busca

• Na maioria das vezes utilizamos o tipo INNER JOIN, que funciona na prática de forma semelhante ao JOIN simples

• No MySQL não é necessário escrever a palavra OUTER, podemos digitar diretamente LEFT JOIN e RIGHT JOIN

1111

Modelagem e Implementação de

Banco de Dados

Prof. Ari Oliveira

SAP HANA14: Tipos de JOIN