JOIN SQL

O join SQL é usado para consultar dados dessas tabelas com base na relação entre as colunas de duas ou mais tabelas.

Join e Chave

Às vezes, para obter resultados completos, precisamos obter resultados de duas ou mais tabelas. Nesse caso, precisamos executar um join.

As tabelas no banco de dados podem ser ligadas entre si por meio de chaves. A chave primária (Primary Key) é uma coluna, onde cada valor da linha é único. Em uma tabela, cada valor da chave primária é único. O objetivo disso é cruzar e amarrar os dados entre as tabelas sem repetir todos os dados de cada tabela.

Vamos ver a tabela "Persons":

Id_P LastName FirstName Endereço Cidade
1 Adams John Oxford Street Londres
2 Bush George Fifth Avenue Nova York
3 Carter Thomas Changan Street Pequim

Por favor, note que a coluna "Id_P" é a chave primária da tabela "Persons". Isso significa que nenhuma linha pode ter o mesmo Id_P. Mesmo que os nomes de duas pessoas sejam completamente iguais, o Id_P pode distingui-las.

Vamos ver a tabela "Orders":

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

Por favor, note que a coluna "Id_O" é a chave primária da tabela "Orders", além disso, a coluna "Id_P" na tabela "Orders" é usada para referenciar a tabela "Persons" sem a necessidade de usar seus nomes exatos.

Atenção, a coluna "Id_P" liga as duas tabelas acima.

Referência a duas tabelas

Podemos obter dados de duas tabelas através de referência a duas tabelas:

Quem comprou o produto e o que comprou?

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

Conjunto de resultados:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

SQL JOIN - Uso de Join

Além do método acima, também podemos usar a palavra-chave JOIN para obter dados de duas tabelas.

Se quisermos listar todas as encomendas das pessoas, podemos usar a seguinte sentença SELECT:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

Conjunto de resultados:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

Diferentes JOIN SQL

Além do INNER JOIN (conexão interna) que usamos no exemplo acima, também podemos usar outros tipos de conexão.

A seguir está listado os tipos de JOIN que você pode usar, bem como as diferenças entre eles.

  • JOIN: Retorna linhas se houver pelo menos uma correspondência na tabela
  • LEFT JOIN: Mesmo que não haja correspondência na tabela direita, retorna todas as linhas da tabela esquerda
  • RIGHT JOIN: Mesmo que não haja correspondência na tabela esquerda, retorna todas as linhas da tabela direita
  • FULL JOIN: Retorna linhas se houver correspondência em qualquer uma das tabelas