Мне нужна помощь с предложением группы по запросу mysql.
Таблица медалей (содержит все медали) :
+-----------------------------------------------------------------------+
| medal_id | medal_level | medal_name | medal_type | medal_icon |
|-----------------------------------------------------------------------|
| 1 | 1 | 1 post medal | 1 | icon_file.png |
| 2 | 2 | 1 thread medal | 2 | icon_file.png |
| 3 | 1 | 2 post medal | 1 | icon_file.png |
| 4 | 2 | 2 threads medal | 2 | icon_file.png |
+-----------------------------------------------------------------------+
Таблица медалей пользователей (содержит медали, завоеванные пользователями) :
+--------------------------------+
|medal_id |user_id | earnedtime |
|--------------------------------|
| 1 | 1 | 1313548360 |
| 2 | 1 | 1313548365 |
| 3 | 1 | 1313548382 |
| 4 | 1 | 1313548410 |
+--------------------------------+
MySQL Query:
SELECT m.*, u.*
FROM users_medals u
LEFT JOIN medals m ON (u.medal_id=m.medal_id)
WHERE u.user_id IN(1)
GROUP BY m.medal_type
ORDER BY u.earnedtime
Для этого предназначены показ медалей, заработанных пользователями (это плагин для системы досок объявлений). Он выбирает и отображает медали, где идентификатор медали пользователя равен идентификатору медали в таблице, содержащей все медали.
Это прекрасно работает, однако, не отображает последнюю медаль. Отображаются только следующие идентификаторы медалей: 1, 2. Должны отображаться 3 и 4.
Дополнительная информация: Я хочу отображать только одну медаль из каждого типа медалей. Так, например, если пользователь заработал две «почтовые медали», будет отображаться только самая последняя заработанная медаль вместе с другими заработанными медалями.
Любая помощь будет принята с благодарностью.