Вот упрощенная схема БД:
У каждой группы есть множество юзеров и каждый юзер может состоять в множестве групп.
Надо отобразить все группы и для каждой отобразить имя юзера у которого значение score максимальное.
Чтоб получить такого юзера для какойто конкретно группы, я делаю так:
SELECT *
FROM users
WHERE id IN (
SELECT user_id FROM user_to_groups WHERE group_id = XX
)
ORDER BY score DESC
LIMIT 1
Но теперь надо это сделать для списка всех групп. Я попробовал сделать нечто подобное:
SELECT g.*, best.*
FROM groups as g
LEFT JOIN (
SELECT *
FROM users
WHERE id IN (
SELECT user_id FROM user_to_groups WHERE group_id = g.id
)
ORDER BY score DESC
LIMIT 1
) as best
Но само собой это не корректный запрос и поэтому он не работает.
Ктото знает как эта проблема решается?
В теории это решается просто, но я чтото не могу подобрать ключевые слова, чтоб самому найти решение в гугле.