Quando comecei na área de TI, sempre me deparava com situações no SQL em que precisava pegar campos de outras tabelas não vinculadas diretamente com a que estamos manipulando, e sentia certa dificuldade em amarrar as tabelas pelas suas respectivas chaves, fossem elas código, id, usuário, etc.

Bem, algo que é de extrema ajuda nesses casos são os nossos amigos JOINs (LEFT JOIN, RIGHT JOIN, INNER JOIN e FULL JOIN).

Hoje percebo que muitos daqueles que estão começando na área de TI sentem o mesmo.

Junções, tradução de JOINs, são utilizadas em duas cláusulas específicas: FROM e WHERE, eu particularmente prefiro usar na cláusula FROM, por questões de desempenho e organização.

Neste artigo vamos analisar algumas consultas possíveis com essas poderosas cláusulas. Então: Let s JOIN!

A princípio vamos entender o primeiro JOIN mencionado, o LEFT JOIN.

Como podemos observar, e a própria sintaxe indica, essa cláusula trabalha com os dados da tabela "Esqueda" como sendo os dados principais, ou seja, de acordo com o exemplo abaixo, o LEFT JOIN mostrará o que esta na Tabela1 (esquerda), podendo trabalhar também com qualquer outro dado da Tabela2 com a mesma chave encontrada na Tabela1.

Os dados principais que estaremos trabalhando serão os da Tabela1, já que esta, como já mencionado, é a nossa tabela " Esquerda ".

SELECT Tab1.* FROM Tabela1 Tab1

LEFT JOIN Tabela2 Tab2 ON Tab1.Cod = Tab2.Cod

Podemos fazer a mesma amarração junto à cláusula WHERE assim como no exemplo abaixo onde estamos pegando os mesmos valores do exemplo acima.

SELECT Tab1.* FROM Tabela1 Tab1, Tabela2 Tab2

WHERE Tab1.Cod *= Tab2.Cod

Nesse exemplo os sinais " *= " indicam a condição LEFT JOIN.

Partiremos agora para o irmão mais próximo do LEFT JOIN, o RIGHT JOIN.

O RIGHT JOIN retorna o que estiver na Tabela1 e Tabela2 com a mesma chave, e sendo o inverso do LEFT JOIN a tabela principal se torna a tabela da " Direita ", ou seja a Tabela2.

SELECT Tab2.* FROM @Tabela1 Tab1

RIGHT JOIN @Tabela2 T2 ON Tab1.Cod = Tab2.Cod

Do mesmo modo que podemos utilizar o LEFT JOIN na cláusula WHERE podemos fazer assim também com o RIGHT JOIN.

SELECT Tab2.* FROM @Tabela1 Tab1, @Tabela2 Tab2

WHERE T1.Cod =* T2.Cod

Observe que o sinal no RIGHT JOIN é diferente do LEFT JOIN, de *=  mudamos para =*.

Alteramos o asterisco da esquerda para a direita, o que se torna uma ajuda para não confundirmos as cláusulas.

LEFT JOIN - Asterisco à esquerda;

RIGHT JOIN - Asterisco à direita.

Desse ponto partiremos para os dois últimos JOINS, o INNER JOIN e o FULL JOIN.

O INNER JOIN nos retorna apenas o que esta na Tabela1 e Tabela2 com a mesma chave.

Exemplo:

SELECT * FROM @Tabela1 T1

INNER JOIN @Tabela2 T2 ON T1.Cod = T2.Cod

Assim como o LEFT JOIN e o RIGHT JOIN, podemos da mesma forma fazer essa amarração junto à cláusula WHERE, como segue o exemplo:

SELECT * FROM @Tabela T1, @Tabela2 T2

WHERE T1.Cod = T2.Cod

Nesse exemplo o sinal " = " indica a função INNER JOIN.

Já O FULL JOIN retorna o que estiver na Tabela1 e Tabela2 levando em conta o seu significado FULL, ou seja, completo. Portanto o FULL JOIN retorna tudo o que há nas Tabelas selecionadas

SELECT * FROM @Tabela1 T1

FULL JOIN @Tabela2 T2 ON T1.Cod = T2.Cod

Bem, essas são as 4 cláusulas mais utilizadas para fazermos amarrações entre tabelas ou pegarmos valores relacionados. Com certeza é de grande ajuda para todos os que fazem uso de banco de dados independentemente de qual seja.

Espero que esta matéria tenha sido de grande ajuda para àqueles que estão começando ou sentem dificuldades nesse assunto.

Até a próxima!