У меня есть данные, которые выглядят так:
entities
id name
1 Apple
2 Orange
3 Banana
Периодически процесс запускается и дает оценку каждому объекту. Процесс генерирует данные и добавляет их в таблицу оценок так:
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
Я хочу, чтобы иметь возможность выбирать все сущности вместе с самой последней записанной оценкой для каждого, что приводит к некоторым данным, подобным этому:
entities
id name score date_added
1 Apple 15 1/4/09
2 Orange 15 1/4/09
3 Banana 15 1/4/09
Я могу получить данные для одного объекта, используя этот запрос:
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
Но я не понимаю, как выбрать то же самое для всех объектов. Возможно, он смотрит мне в лицо?
Благодарим вас за то, что нашли время.
Спасибо за отличные ответы. Я дам ему несколько дней, чтобы увидеть, будет ли предпочтительное решение пузыриться, тогда я выберу ответ.
ОБНОВЛЕНИЕ: я опробовал несколько предлагаемых решений, основная проблема, с которой я столкнулся сейчас, заключается в том, что если у сущности еще нет сгенерированной оценки, они не отображаются в списке.
Что бы SQL выглядел так, чтобы гарантировать, что все сущности будут возвращены, даже если у них еще нет оценки?
UPDATE: выбран ответ. Спасибо всем!