Utilizando JOINS em SQL

Salve, salve

Para aqueles que tinham dúvidas quanto ao funcionamento dos JOIN’s das tabelas no SQL, desenvolvi um pequeno tutorial de apoio, que segue abaixo:

Tabelas e seus registros:
TABELA_A
——————–
|CODIGO | NOME |
——————–
| 1 | UM |
| 2 | DOIS |
| 3 | TRES |
| 4 | QUATRO |
| 5 | CINCO |
——————–

TABELA_B
————————
|LANCA | CODIGO | VALOR|
————————
| 1 | 1 | 1.000|
| 2 | 1 | 2.000|
| 3 | 1 | 5.000|
| 4 | 2 | 4.000|
| 5 | 2 | 9.000|
| 6 | 3 | 7.000|
| 7 | 5 | 4.000|
| 8 | 8 | 7.000|
————————

Para a relação entre as tabelas temos:

• 3 registros para a empresa 1 (que existe na tabela de empresas);
• 2 registros para a empresa 2 (que existe na tabela de empresas);
• 1 registros para a empresa 3 (que existe na tabela de empresas);
• 0 registros para a empresa 4 (que existe na tabela de empresas);
• 1 registros para a empresa 5 (que existe na tabela de empresas);
• 1 registros para a empresa 8 (que NÃO existe na tabela de empresas);

Agora vamos ver como ficariam as pesquisas* (SELECT’s) com os JOIN’s
( INNER, [ LEFT | RIGHT | FULL ] OUTER ):

* Para tais pesquisas vamos usar a seguinte linguagem:
SELECT [CAMPOS]
FROM “TABELA_DA_ESQUERDA”
[INNER] JOIN | {LEFT | RIGHT | FULL } [OUTER]} JOIN “TABELA_DA_DIREITA”

1) INNER JOIN:

SELECT A.NOME “A.NOME”,
B.VALOR “B.VALOR”
FROM TABELA_A A
INNER JOIN TABELA_B B ON B.CODIGO = A.CODIGO

——————-
|A.NOME | B.VALOR |
——————-
1.|UM | 1.000|
2.|UM | 2.000|
3.|UM | 5.000|
4.|DOIS | 4.000|
5.|DOIS | 9.000|
6.|TRES | 7.000|
7.|CINCO | 4.000|
——————-

Nas pesquisas com INNER JOIN o resultado trará somente as linhas que sejam comum nas 2 tabelas, ligadas pelos campos das tabelas em questão na pesquisa.

2) LEFT OUTER JOIN:

SELECT A.NOME “A.NOME”,
B.VALOR “B.VALOR”
FROM TABELA_A A
LEFT OUTER JOIN TABELA_B B ON B.CODIGO = A.CODIGO

——————-
|A.NOME | B.VALOR |
——————-
1.|UM | 1.000|
2.|UM | 2.000|
3.|UM | 5.000|
4.|DOIS | 4.000|
5.|DOIS | 9.000|
6.|TRES | 7.000|
7.|QUATRO | |
8.|CINCO | 4.000|
——————-

Nas pesquisas com LEFT OUTER JOIN o resultado trará todas os registros que estejam na tabela da esquerda do JOIN (neste caso é a TABELA_A) ao menos 1 vez, mesmo que não tenham registros na tabela da direita do JOIN (neste caso é a TABELA_B) ligadas à tabela da esquerda, como é o caso da linha 7.

3) RIGHT OUTER JOIN:

SELECT A.NOME “A.NOME”,
B.VALOR “B.VALOR”
FROM TABELA_A A
RIGHT OUTER JOIN TABELA_B B ON B.CODIGO = A.CODIGO

——————-
|A.NOME | B.VALOR |
——————-
1.|UM | 1.000|
2.|UM | 2.000|
3.|UM | 5.000|
4.|DOIS | 4.000|
5.|DOIS | 9.000|
6.|TRES | 7.000|
7.|CINCO | 4.000|
8.| | 7.000|
——————-

Nas pesquisas com RIGHT OUTER JOIN o resultado trará todas os registros que estejam na tabela da direita do JOIN (neste caso é a TABELA_B) ao menos 1 vez, mesmo que não tenham registros na tabela da esquerda do JOIN (neste caso é a TABELA_A) ligadas à tabela da direita, como é o caso da linha 8.

4) FULL OUTER JOIN:

SELECT A.NOME “A.NOME”,
B.VALOR “B.VALOR”
FROM TABELA_A A
FULL OUTER JOIN TABELA_B B ON B.CODIGO = A.CODIGO

——————-
|A.NOME | B.VALOR |
——————-
1.|UM | 1.000|
2.|UM | 2.000|
3.|UM | 5.000|
4.|DOIS | 4.000|
5.|DOIS | 9.000|
6.|TRES | 7.000|
7.|QUATRO | |
8.|CINCO | 4.000|
9.| | 7.000|
——————-

// Deixe seu comentário

Take care

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s