Junções do MySQL
Tabelas de junção do MySQL
Uma JOIN
cláusula é usada para combinar linhas de duas ou mais tabelas, com base em uma coluna relacionada entre elas.
Vejamos uma seleção da tabela "Pedidos":
OrderID | CustomerID | OrderDate |
---|---|---|
10308 | 2 | 1996-09-18 |
10309 | 37 | 1996-09-19 |
10310 | 77 | 1996-09-20 |
Em seguida, veja uma seleção da tabela "Clientes":
CustomerID | CustomerName | ContactName | Country |
---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mexico |
Observe que a coluna "CustomerID" na tabela "Pedidos" se refere ao "CustomerID" na tabela "Clientes". A relação entre as duas tabelas acima é a coluna "CustomerID".
Em seguida, podemos criar a seguinte instrução SQL (que contém um
INNER JOIN
), que seleciona os registros que possuem valores correspondentes em ambas as tabelas:
Exemplo
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
e vai produzir algo assim:
OrderID | CustomerName | OrderDate |
---|---|---|
10308 | Ana Trujillo Emparedados y helados | 9/18/1996 |
10365 | Antonio Moreno Taquería | 11/27/1996 |
10383 | Around the Horn | 12/16/1996 |
10355 | Around the Horn | 11/15/1996 |
10278 | Berglunds snabbköp | 8/12/1996 |
Tipos de Junções Suportados no MySQL
INNER JOIN
: Retorna registros que possuem valores correspondentes em ambas as tabelasLEFT JOIN
: Retorna todos os registros da tabela da esquerda e os registros correspondentes da tabela da direitaRIGHT JOIN
: Retorna todos os registros da tabela da direita e os registros correspondentes da tabela da esquerdaCROSS JOIN
: Retorna todos os registros de ambas as tabelas