Palavra- chave SQL FULL OUTER JOIN
Palavra-chave SQL FULL OUTER JOIN
A palavra- FULL OUTER JOIN
chave retorna todos os registros quando há uma correspondência nos registros da tabela esquerda (tabela1) ou direita (tabela2).
Dica: FULL OUTER JOIN
e
FULL JOIN
são os mesmos.
Sintaxe FULL OUTER JOIN
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;
Nota: FULL OUTER JOIN
pode potencialmente retornar conjuntos de resultados muito grandes!
Banco de dados de demonstração
Neste tutorial, usaremos o conhecido banco de dados de exemplo Northwind.
Abaixo está uma seleção da tabela "Clientes":
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
E uma seleção da tabela "Pedidos":
OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|
10308 | 2 | 7 | 1996-09-18 | 3 |
10309 | 37 | 3 | 1996-09-19 | 1 |
10310 | 77 | 8 | 1996-09-20 | 2 |
Exemplo SQL FULL OUTER JOIN
A seguinte instrução SQL seleciona todos os clientes e todos os pedidos:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
Uma seleção do conjunto de resultados pode ter esta aparência:
CustomerName | OrderID |
---|---|
Null | 10309 |
Null | 10310 |
Alfreds Futterkiste | Null |
Ana Trujillo Emparedados y helados | 10308 |
Antonio Moreno Taquería | Null |
Observação: a palavra- FULL OUTER JOIN
chave retorna todos os registros correspondentes de ambas as tabelas, independentemente de a outra tabela corresponder ou não. Portanto, se houver linhas em "Clientes" que não tenham correspondências em "Pedidos" ou se houver linhas em "Pedidos" que não tenham correspondências em "Clientes", essas linhas também serão listadas.