QUEST #259 · RELACIONAMENTOS

Aliança JOIN

O quadro de missões mostra apenas o número do herói responsável. O capitão quer ler o nome de cada herói ao lado do título da missão que ele assumiu.

LV.2+80 XP
📖 CONCEITO

JOIN (ou INNER JOIN) combina linhas de duas tabelas segundo a condição do ON, normalmente chave estrangeira = chave primária. Só aparecem as linhas que têm par nas duas tabelas. Apelidos curtos (herois h) evitam ambiguidade quando as duas tabelas têm colunas com o mesmo nome, como id.

EXEMPLO DE USO
SELECT h.nome, g.nome AS guilda
FROM herois h
JOIN guildas g ON g.id = h.guilda_id;
🗄️ SCHEMA
Tabela `herois` (id SERIAL PRIMARY KEY, nome TEXT, classe TEXT, nivel INT, hp INT, ouro INT, guilda_id INT — pode ser NULL) Tabela `missoes` (id SERIAL PRIMARY KEY, titulo TEXT, heroi_id INT — id do herói, recompensa INT, status TEXT — 'concluida' | 'pendente' | 'falhou', concluida_em TIMESTAMP — NULL se não concluída)
🎯 DESAFIO

Liste `h.nome` e `m.titulo` juntando `herois h` com `missoes m`, ligando a coluna `m.heroi_id` ao id do herói.

psql — banco reino⌨ QUERY