08 Joins - rodrigomourapinto/aprenda_postgresql GitHub Wiki
Joins
JOIN combina linhas de duas ou mais fontes com base em uma condição.
INNER JOIN
Traz somente correspondências:
SELECT
p.produto_id,
p.nome,
c.nome AS categoria
FROM produtos p
INNER JOIN categorias c
ON c.categoria_id = p.categoria_id;
LEFT JOIN
Mantém todas as linhas da tabela da esquerda, mesmo sem correspondência:
SELECT
c.cliente_id,
c.nome,
p.pedido_id
FROM clientes c
LEFT JOIN pedidos p
ON p.cliente_id = c.cliente_id;
Vários joins
SELECT
pe.pedido_id,
c.nome AS cliente,
pr.nome AS produto,
ip.quantidade,
ip.preco_unitario
FROM pedidos pe
JOIN clientes c ON c.cliente_id = pe.cliente_id
JOIN itens_pedido ip ON ip.pedido_id = pe.pedido_id
JOIN produtos pr ON pr.produto_id = ip.produto_id;
Cuidados
O maior erro comum em joins é multiplicar linhas sem perceber. Antes de agregar, confira a cardinalidade de cada relacionamento.