JUNÇÕES - FIREBIRD
- #SQL
O objetivo principal das junções é obter dados mais completos e significativos, reunindo informações de diferentes tabelas que estão relacionadas entre si. Isso é especialmente útil em bancos de dados relacionais, onde os dados estão divididos em várias tabelas para evitar a redundância e melhorar a eficiência do armazenamento.
Existem vários tipos de junções em SQL, incluindo:
INNER JOIN:
- Retorna apenas os registros que têm correspondências nas duas tabelas envolvidas.
- Os registros que não têm correspondências são excluídos do resultado.
- É usado quando você deseja obter apenas os registros que têm relações em ambas as tabelas.
LEFT JOIN (OUTER JOIN):
- Retorna todos os registros da tabela à esquerda e os registros correspondentes da tabela à direita.
- Se não houver correspondência na tabela à direita, os campos correspondentes serão preenchidos com valores NULL.
- É usado quando você deseja obter todos os registros da tabela à esquerda, independentemente de haver correspondências na tabela à direita.
RIGHT JOIN (OUTER JOIN):
- Similar ao LEFT JOIN, mas retorna todos os registros da tabela à direita e os registros correspondentes da tabela à esquerda.
- É usado quando você deseja obter todos os registros da tabela à direita, independentemente de haver correspondências na tabela à esquerda.
FULL OUTER JOIN (OUTER JOIN):
- Retorna todos os registros de ambas as tabelas, incluindo registros não correspondentes.
- Se não houver correspondência em uma das tabelas, os campos correspondentes serão preenchidos com valores NULL.
- É usado quando você deseja obter todos os registros de ambas as tabelas, incluindo registros que não têm correspondências nas tabelas opostas.
CROSS JOIN:
- Combina todos os registros de uma tabela com todos os registros da outra tabela, criando um produto cartesiano.
- Geralmente resulta em um conjunto de resultados muito grande e pode não ser útil em muitos cenários.
- É usado quando você deseja criar todas as combinações possíveis entre os registros de duas tabelas.
SELF JOIN:
- É uma junção onde uma tabela é combinada com ela mesma.
- Pode ser usado para comparar registros dentro da mesma tabela, como encontrar correspondências ou diferenças entre registros.
------------------------------------------------------------------------------------------------------------------
INNER JOIN:
SELECT Clientes.nome, Pedidos.produto
FROM Clientes
INNER JOIN Pedidos ON Clientes.id_cliente = Pedidos.id_cliente;
LEFT JOIN:
SELECT Clientes.nome, Pedidos.produto
FROM Clientes
LEFT JOIN Pedidos ON Clientes.id_cliente = Pedidos.id_cliente;
RIGHT JOIN:
SELECT Clientes.nome, Pedidos.produto
FROM Clientes
RIGHT JOIN Pedidos ON Clientes.id_cliente = Pedidos.id_cliente;
FULL OUTER JOIN:
SELECT COALESCE(Clientes.nome, 'N/A') AS nome, COALESCE(Pedidos.produto, 'N/A') AS produto
FROM Clientes
FULL OUTER JOIN Pedidos ON Clientes.id_cliente = Pedidos.id_cliente;
CROSS JOIN:
SELECT Clientes.nome, Pedidos.produto
FROM Clientes
CROSS JOIN Pedidos;
SELF JOIN:
SELECT c1.nome AS nome_cliente1, c2.nome AS nome_cliente2
FROM Clientes c1
JOIN Clientes c2 ON c1.id_cliente <> c2.id_cliente;
INNER JOIN:
SELECT Clientes.nome, Pedidos.produto
FROM Clientes
INNER JOIN Pedidos ON Clientes.id_cliente = Pedidos.id_cliente;
LEFT JOIN:
SELECT Clientes.nome, Pedidos.produto
FROM Clientes
LEFT JOIN Pedidos ON Clientes.id_cliente = Pedidos.id_cliente;
RIGHT JOIN:
SELECT Clientes.nome, Pedidos.produto
FROM Clientes
RIGHT JOIN Pedidos ON Clientes.id_cliente = Pedidos.id_cliente;
FULL OUTER JOIN:
SELECT COALESCE(Clientes.nome, 'N/A') AS nome, COALESCE(Pedidos.produto, 'N/A') AS produto
FROM Clientes
FULL OUTER JOIN Pedidos ON Clientes.id_cliente = Pedidos.id_cliente;
CROSS JOIN:
SELECT Clientes.nome, Pedidos.produto
FROM Clientes
CROSS JOIN Pedidos;
SELF JOIN:
SELECT c1.nome AS nome_cliente1, c2.nome AS nome_cliente2
FROM Clientes c1
JOIN Clientes c2 ON c1.id_cliente <> c2.id_cliente;