DevPath · Aprenda a programar ESPTEN

JOINs: combinar tabelas

Combinar tabelas com INNER JOIN

Lembrete: dados distribuídos em tabelas

No módulo anterior você viu o design relacional: a informação se distribui em várias tabelas e cada produto referencia sua categoria por meio de uma chave estrangeira (categoria_id aponta para categorias.id) em vez de repetir o nome. Aqui partimos desse design já pronto e nos concentramos na pergunta que ficou pendente: como voltamos a juntar essas tabelas para consultá-las?

produtos.id nome categoria_id categorias.id nome
1 Teclado 1 1 Perifericos
3 Monitor 2 2 Telas

Voltar a unir: INNER JOIN

Para ver o nome da categoria junto ao do produto é preciso combinar ambas as tabelas. Isso é um JOIN: você emparelha linhas de uma tabela com linhas de outra de acordo com uma condição.

SELECT produtos.nome, categorias.nome
FROM produtos
INNER JOIN categorias ON produtos.categoria_id = categorias.id;

O INNER JOIN só mantém as linhas que têm par em ambos os lados. Um produto com categoria_id que não existe em categorias (ou NULL) desaparece do resultado. Veremos isso em detalhe na próxima lição.

Como duas tabelas podem ter colunas com o mesmo nome (aqui, nome em ambas), convém qualificá-las com o nome da tabela: produtos.nome, categorias.nome.

Exemplos

INNER JOIN: produto e nome de sua categoria

-- Só aparecem os produtos que têm categoria atribuída.
SELECT produtos.nome, categorias.nome AS categoria
FROM produtos
INNER JOIN categorias ON produtos.categoria_id = categorias.id;
Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
LEFT JOIN: manter a tabela da esquerda →