Exercícios Práticos de JOIN

Supabase + PostgreSQL

O que são JOINs?

JOINs são operações que permitem combinar dados de duas ou mais tabelas baseando-se em uma relação entre elas. São fundamentais para trabalhar com bancos de dados relacionais.

INNER JOIN

Retorna apenas os registros que têm correspondência em ambas as tabelas.

LEFT JOIN

Retorna todos os registros da tabela esquerda e os correspondentes da direita.

RIGHT JOIN

Retorna todos os registros da tabela direita e os correspondentes da esquerda.

FULL JOIN

Retorna todos os registros quando há correspondência em uma das tabelas.

Exemplo Básico

SELECT clientes.nome, pedidos.valor
FROM clientes
INNER JOIN pedidos ON clientes.id = pedidos.cliente_id;

Esta query retorna o nome dos clientes e o valor de seus pedidos, mostrando apenas clientes que fizeram pedidos.

🔗 Como Funciona o JOIN - Explicação Detalhada

🏠 Analogia: Juntando Informações de Duas Listas

Imagine que você tem duas listas em casa:

📋 Lista 1: Pessoas da Família
  • • João (ID: 1)
  • • Maria (ID: 2)
  • • Pedro (ID: 3)
🎂 Lista 2: Aniversários
  • • Pessoa ID: 1 → 15/03
  • • Pessoa ID: 2 → 22/07
  • • Pessoa ID: 4 → 10/12

O JOIN é como juntar essas duas listas para saber "Qual o nome da pessoa E quando é seu aniversário". Você conecta as listas usando o ID da pessoa!

⚙️ Como o JOIN Funciona - Passo a Passo

1
O banco de dados pega a primeira tabela (clientes)

Ele vai linha por linha na tabela de clientes

2
Para cada cliente, procura na segunda tabela (pedidos)

Usa a condição clientes.id = pedidos.cliente_id

3
Se encontrar correspondência, junta as informações

Cria uma nova linha com dados das duas tabelas

4
Retorna apenas o que você pediu no SELECT

No nosso exemplo: nome do cliente + valor do pedido

📝 Quebrando a Sintaxe do JOIN

SELECT clientes.nome, pedidos.valor
FROM clientes
INNER JOIN pedidos ON clientes.id = pedidos.cliente_id;
SELECT clientes.nome, pedidos.valor

📋 O que queremos ver: Nome da tabela clientes + valor da tabela pedidos

FROM clientes

🏠 Tabela principal: Começamos pela tabela clientes

INNER JOIN pedidos

🔗 Juntamos com: A tabela pedidos (só mostra quem tem correspondência)

ON clientes.id = pedidos.cliente_id

🎯 Condição de ligação: Como as tabelas se conectam

👀 Exemplo Visual: Antes e Depois do JOIN

📋 Tabela: clientes
id nome
1 João
2 Maria
3 Pedro
🛒 Tabela: pedidos
id cliente_id valor
101 1 R$ 150
102 1 R$ 200
103 2 R$ 75
✨ Resultado do JOIN
nome valor
João R$ 150
João R$ 200
Maria R$ 75

🔍 Observe: Pedro não aparece no resultado porque ele não tem pedidos! O INNER JOIN só mostra registros que existem nas duas tabelas.

🎯 Diferentes Tipos de JOIN

🔗 INNER JOIN

Mostra apenas registros que existem nas duas tabelas

SELECT c.nome, p.valor
FROM clientes c
INNER JOIN pedidos p ON c.id = p.cliente_id;

Resultado: João, Maria (Pedro não tem pedidos)

⬅️ LEFT JOIN

Mostra TODOS da tabela esquerda + correspondentes da direita

SELECT c.nome, p.valor
FROM clientes c
LEFT JOIN pedidos p ON c.id = p.cliente_id;

Resultado: João, Maria, Pedro (NULL)

➡️ RIGHT JOIN

Mostra TODOS da tabela direita + correspondentes da esquerda

SELECT c.nome, p.valor
FROM clientes c
RIGHT JOIN pedidos p ON c.id = p.cliente_id;

Resultado: Todos os pedidos, mesmo sem cliente

🔄 FULL JOIN

Mostra TODOS os registros de ambas as tabelas

SELECT c.nome, p.valor
FROM clientes c
FULL JOIN pedidos p ON c.id = p.cliente_id;

Resultado: Tudo, com NULLs onde não há correspondência

⚠️ Dicas Importantes para Evitar Erros

❌ Erro Comum: Esquecer o ON

Sempre especifique como as tabelas se conectam:

❌ ERRADO:

SELECT * FROM clientes JOIN pedidos

✅ CORRETO:

SELECT * FROM clientes JOIN pedidos ON clientes.id = pedidos.cliente_id
🏷️ Use Aliases para Facilitar

Dê apelidos curtos para as tabelas:

SELECT c.nome, p.valor FROM clientes c JOIN pedidos p ON c.id = p.cliente_id
🎯 Seja Específico com Colunas

Quando duas tabelas têm colunas com o mesmo nome:

SELECT clientes.id, clientes.nome, pedidos.id AS pedido_id
🚀 Performance: Use WHERE Quando Possível

Filtre dados para melhorar a velocidade:

SELECT c.nome, p.valor FROM clientes c JOIN pedidos p ON c.id = p.cliente_id WHERE p.valor > 100

Setup do Supabase

1. Crie seu projeto no Supabase

Acesse supabase.com e crie um novo projeto.

2. Obtenha suas credenciais

Em Settings → API, copie a URL e a anon key do seu projeto.

3. Configure abaixo

Insira suas credenciais do Supabase e seu número de aluno (1-32):