Arquivo de tag INNER JOIN

porPaulo Henrique Corrêa Cardoso

JOIN’s SQL – Vamos aprender ?

Olá pessoal, vamos dar continuidade a nossa trilha do SQL. Dessa vez vamos aprender a relacionar tabelas no momento das consultas.

Para isso vamos utilizar a cláusula JOIN e suas cláusulas conjuntas.

Temos algumas variações da cláusula JOIN. Agora vamos entender cada uma delas.

INNER JOIN  ou JOIN

A cláusula INNER JOIN ou somente JOIN, é utilizada para cruzarmos registro trazendo apenas aqueles que existirem em ambas as tabelas.

SELECT Func.NomeFuncionario

      ,Carg.DescCargo

FROM FUNCIONARIO Func

INNER JOIN CARGO Carg  
  ON Carg.Cod = Func.CodCargo

Neste exemplo a consulta retornará todos os registros que contemplem ambos os lados da consulta, ou seja todos os funcionários que possuam cargos.

 

LEFT JOIN

A cláusula LEFT JOIN, é utilizada para cruzarmos registro trazendo todos os da tabela declarada a esquerda e aqueles que existirem em ambas as tabelas.

SELECT Func.NomeFuncionario
      ,Carg.DescCargo
FROM FUNCIONARIO Func
LEFT JOIN CARGO Carg  
  ON Carg.Cod = Func.CodCargo

Neste exemplo a consulta retornará todos os funcionários que tenham cargo e também os que não possuírem, neste caso as informações de cargo virão como NULL.

 

RIGHT JOIN

A cláusula RIGHT JOIN, é utilizada para cruzarmos registro trazendo todos os da tabela declarada a direita e aqueles que existirem em ambas as tabelas.

SELECT Func.NomeFuncionario

      ,Carg.DescCargo

FROM FUNCIONARIO Func

RIGHT JOIN CARGO Carg  

  ON Carg.Cod = Func.CodCargo

Neste exemplo a consulta retornará todos os cargos que tenham funcionários  e também os que não possuírem, neste caso as informações de funcionário virão como NULL.

 

FULL JOIN

A cláusula FULL JOIN, é utilizada para cruzarmos registro trazendo os registros de ambas as tabelas, possuindo cruzamento ou não.

SELECT Func.NomeFuncionario

      ,Carg.DescCargo

FROM FUNCIONARIO Func

FULL JOIN CARGO Carg  

  ON Carg.Cod = Func.CodCargo

Neste exemplo a consulta retornará todos os registros de ambas as tabelas, para as que não possuírem relacionamento, as informação não contempladas virão como NULL.

 

CROSS JOIN

A cláusula CROSS JOIN, realiza o cruzamento de todos os registro da primeira tabela com todos os registros da segunda tabela.

Está cláusula deve ser utilizado com cuidado, pois pode gerar lentidão no seu processamento dependendo do volume de registros.

SELECT Func.NomeFuncionario

      ,Carg.DescCargo

FROM FUNCIONARIO Func

CROSS JOIN CARGO Carg  

No caso a cima, a consulta retornara um cruzamento desconsiderando a chave, e vai cruzar todos os registros de funcionário com os registros de cargo.

Por exemplo

NomeFuncionario DescCargo
Paulo Analista
Paulo Gerente
Paulo Diretor
Maria Analista
Maria Gerente
Maria Diretor
Pedro Analista
Pedro Gerente
Pedro Diretor

 

Pontos muito importantes !!!

  • É sempre muito importante, para termos uma query que desempenhe bem, montarmos a cláusula ON seguindo um índice existente na tabela que será consultada.
  • Também é muito importante deixar as condições relativas a uma tabela sempre dentro do ON da mesma tabela e não no WHERE. No WHERE deixamos as condições da tabela principal.
  • Definirmos os campos que queremos que a consulta retorne, nunca deixar * no SELECT, isso impacta muito na performance do retorno.
  • Utilizar FULL JOIN e CROSS JOIN com prudência, pois os mesmos impactam na performance das consultas.

 

 

Espero que ajude muito a todos.

Até a próxima!!!