-1

重複の可能性:
MySQLORDERBY別のテーブルのユーザーの合計行

私には5人のユーザーがいます(テーブル上users):

User ID (uid) | User Name (uname)
-----------------------------------
1               Fallon
2               Jeremy
3               Matt
4               Peter
5               John
  • ファロン(uid 1)はこれまでに35回ログインしています。
  • ジェレミーは32回ログインしました。
  • マットは57回ログインしました。
  • ピーターは43回ログインしました。
  • ジョンは23回ログインしました。

ログの詳細は別のテーブルに保存されます(logs):

Log ID (logid) - User ID (uid)

ここで、ログに記録された時間の多い順にユーザーのリストを表示したいと思います。最も多くログインしたユーザーが一番上になり、2番目にログインしたユーザーが2番目になります。好き:

  1. マットは57回ログインしました。
  2. ピーターは43回ログインしました。
  3. ファロンは35回ログインしました。
  4. ジェレミーは32回ログインしました。
  5. ジョンは23回ログインしました。

ログは1つのテーブルに保存され、ユーザーの詳細は別のテーブルに保存されるためです。上記のようなリストを作成するために、どのようにすればよいですか、どのクエリを使用すればよいですか。助けてください。

4

3 に答える 3

3

JOINこれは、 :を含む単純なクエリです。

SELECT users.uid, users.uname, COUNT(logs.logid) AS logins 
  FROM users 
  LEFT JOIN logs ON logs.uid=users.uid 
  GROUP BY users.uid
  ORDER BY logins DESC
于 2012-10-04T17:42:05.433 に答える
2

テストされていませんが、これでうまくいくと思います。

SELECT u.`uid`, u.`uname`, COUNT( l.`logid` ) AS count 
FROM `users` AS u, `logs` AS l 
WHERE u.`uid` = l.`uid` 
GROUP BY l.`uid` 
ORDER BY count DESC
于 2012-10-04T17:43:21.560 に答える
1
  SELECT users.uid, users.uname, COUNT(logs.logid) as logins 
  FROM users, logs 
  where  logs.uid=users.uid 
  GROUP BY logs.uid
  ORDER BY logins DESC
于 2012-10-04T17:43:16.763 に答える