SELECT COMPRADORES.NOME, SUM(VALOR)
FROM COMPRAS INNER JOIN COMPRADORES ON COMPRAS.COMPRADOR_ID = COMPRADORES.ID
GROUP BY COMPRADORES.NOME
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.