私はmysqlクエリ句でグループにいくつかの助けが必要です。MySQL:Group By Clause
メダル表(これはすべてのメダルを保持している):
+-----------------------------------------------------------------------+
| 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クエリ:
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
これは、ユーザーが獲得したメダルの表示(掲示板システム用のプラグイン)です。ユーザーのメダルIDがすべてのメダルを保持するテーブルのメダルIDと等しいメダルを選択して表示します。
これはうまくいきますが、最新のメダルを表示していません。それだけで、次のメダルidを表示しています:1、2、それは3と4
追加情報を表示する必要があります。を私は、各メダルの種類からメダル1枚を表示したいです。たとえば、ユーザーが2つの「ポストメダル」を獲得した場合、獲得した最新のメダルだけでなく、獲得した他のメダルも表示されます。
ご協力いただければ幸いです。
なぜGROUP BYを使用していますか? – Dalen
@Dalen私は何とかmedal_typeをグループ化する必要があるので、各タイプごとに1つのメダルしか表示されません。 – Spencer
medal_id 1(タイプ1)とmedal_id 2(タイプ2)を表示している場合。それからそれはタイプごとに1つのメダルだけを表示しています。それは働いていますか? –