Como associo a linha mais recente de uma tabela a outra tabela?
Eu tenho dados parecidos com este:
entities
id name
1 Apple
2 Orange
3 Banana
Periodicamente, um processo será executado e atribuirá uma pontuação a cada entidade. O processo gera os dados e os adiciona a uma tabela de pontuação da seguinte forma:
scores
id entity_id score date_added
1 1 10 1/2/09
2 2 10 1/2/09
3 1 15 1/3/09
4 2 10 1/03/09
5 1 15 1/4/09
6 2 15 1/4/09
7 3 22 1/4/09
Quero poder selecionar todas as entidades junto com a pontuação mais recente registrada para cada uma delas, resultando em alguns dados como este:
entities
id name score date_added
1 Apple 15 1/4/09
2 Orange 15 1/4/09
3 Banana 15 1/4/09
Eu posso obter os dados para uma única entidade usando esta consulta:
SELECT entities.*,
scores.score,
scores.date_added
FROM entities
INNER JOIN scores
ON entities.id = scores.entity_id
WHERE entities.id = ?
ORDER BY scores.date_added DESC
LIMIT 1
Mas não sei como selecionar o mesmo para todas as entidades. Talvez esteja me encarando?
Muito obrigado por dedicar um tempo.
Obrigado pelas ótimas respostas. Vou aguardar alguns dias para ver se uma solução preferida surge e selecionarei a resposta.
ATUALIZAÇÃO: Tentei várias das soluções propostas, o principal problema que estou enfrentando agora é que, se uma entidade ainda não possui uma pontuação gerada, ela não aparece na lista.
Como seria o SQL para garantir que todas as entidades sejam retornadas, mesmo que ainda não tenham nenhuma pontuação publicada?
UPDATE: Resposta selecionada. Obrigado a todos!