У меня есть две таблицы. Игроки (упрощенный вариант): players(id, team_id) и игры games(id, date, home_team_id, away_team_id).
Мне нужно вывести id будущих игр для каждого игрока. В теории все понятно, нужно объединить две таблицы (через games.home_team_id = players.team_id or games.away_team_id = players.team_id). Затем сгруппировать по игроку, отфильтровать прошедшие игры и выбрать среди них минимальные даты). Но на практике не удается создать корректный запрос, который бы работал...
SELECT min(games.date) AS min_1, players.id AS u_id
FROM games join players on games.home_team_id=players.team_id or games.away_team_id=players.team_id where games.date > '2015-03-26 12:36:00+000' GROUP BY players.id ORDER BY players.id
Вот такой запрос работает, и на первый взгляд выдает корректные данные, но если я попытаюсь добавить в SELECT games.id, субд сообщит мне следующее: column "games.id" must appear in the GROUP BY clause or be used in an aggregate function
А если я пойду у нее на поводу и добавлю в GROUP BY games.id, то минимальная дата для каждой отдельно взятой игры будет, что логично - датой этой игры. Т.е. я получу не по одной игре для каждого игрока, а все его игры, что не выполняет поставленную задачу.
Как выйти из этой ситуации? Долго уже бьюсь, но решения найти не удается..