SELECT COMPRADORES.NOME, SUM(VALOR)
FROM COMPRAS INNER JOIN COMPRADORES ON COMPRAS.COMPRADOR_ID = COMPRADORES.ID
GROUP BY COMPRADORES.NOME
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
SELECT COMPRADORES.NOME, SUM(VALOR)
FROM COMPRAS INNER JOIN COMPRADORES ON COMPRAS.COMPRADOR_ID = COMPRADORES.ID
GROUP BY COMPRADORES.NOME
Olá Adriano,
É possível sim. O Join serve para juntar os dados de duas tabelas diferentes, e a coluna que vai associar estas duas tabelas não precisa ter uma constraint de chave estrangeira para funcionar.
Seguindo seu exemplo, a diferença é que se não tem a FK, o banco de dados permitirá que exista registros na tabela COMPRAS cujo valor da coluna COMPRADOR_ID aponta para algo que não existe na tabela COMPRADORES, na coluna ID.
Ou seja, o banco de dados permitirá uma falta de integridade e consistência da informação. Você terá um registro "quebrado", um Compra que aponta para um Comprador inexistente.
Ainda assim, como dito anteriormente, você conseguirá executar o select e fazer o join, o problema é que nesses casos inconsistente, não vai funcionar como deveria.
Por isso é importante existir a FK, ela dá toda uma segurança aos dados, pois garante a integridade e consistência dos mesmos. Com a FK, nunca poderá existir uma Compra que aponta para um Comprador que não existe.
Espero ter ajudado.
Abraço.