rodrigosantosbr

JOINS

Aug 4th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!

INNER JOIN / JIN

  • formato comum de join
  • retorna dados apenas quando as duas tabelas tem chaves correspondentes (IGUAIS) na cláusula ON do join.
----------------
TABELA_A
----------------
NOME    |  CHAVE
JOSE    |  1
MARIA   |  3
RENATA  |  4
ROBERTO |  8

----------------
TABELA_B
----------------
PROFISSAO    |  CHAVE
ESTIVADOR    |  1
GERENTE      |  3
PORTEIRO     |  5
ENGENHEIRO   |  8

Query:

SELECT TabelaA.*, TabelaB.* 
FROM TabelaA 
INNER JOIN TabelaB 
ON TabelaA.Chave = TabelaB.Chave

Resultado:

TABELA_A.nome | TABELA_A.chave  | TABELA_B.profissao | TABELA_A.chave  |
------------------------------------------------------------------------- 
JOSE          | 1               | ESTIVADOR          | 1               |
MARIA         | 3               | GERENTE            | 3               |
ROBERTO       | 8               | ENGENHEIRO         | 8               |

Left Join

  • um dos formatos mais usados de join
  • retorna a Tabela A inteira + apenas os registros que coincidirem com a igualdade do join na TabelaB (ou campos nulos para os campos sem correspondência).

Query:

SELECT TabelaA.*, TabelaB.* 
FROM TabelaA 
LEFT JOIN TabelaB 
ON TabelaA.Chave = TabelaB.Chave

Resultado:

TABELA_A.nome | TABELA_A.chave  | TABELA_B.profissao | TABELA_A.chave  |
------------------------------------------------------------------------- 
JOSE          | 1               | ESTIVADOR          | 1               |
MARIA         | 3               | GERENTE            | 3               |
RENATA        | 4               | NULL               | NULL            |
ROBERTO       | 8               | ENGENHEIRO         | 8               |

Right Join

  • Segue o mesmo raciocínio do Left Join, mas se aplicando à tabela B em vez da A:
SELECT TabelaA.*, TabelaB.* 
FROM TabelaA 
RIGHT JOIN TabelaB 
  ON TabelaA.Chave = TabelaB.Chave

Resultado:

TABELA_A.nome | TABELA_A.chave  | TABELA_B.profissao | TABELA_A.chave  |
------------------------------------------------------------------------- 
JOSE          | 1               | ESTIVADOR          | 1               |
MARIA         | 3               | GERENTE            | 3               |
NULL          | NULL            | Porteiro           | 5               |
ROBERTO       | 8               | ENGENHEIRO         | 8               |

https://pt.stackoverflow.com/questions/6441/qual-é-a-diferença-entre-inner-join-e-outer-join

Add Comment
Please, Sign In to add comment