0

ここでは、コメント列の文字列の中間値 (ログイン) を取得してから、各ユーザーのカウントを取得しようとしています。しかし、これは正しい方法ではないと思います。他に方法はありませんか...!

user#   user ID Comments
101     user 1  ***log in*** : shera
101     user 1  ***log in*** : Mark
102     user 2  ***log out***
105     user 5  ***log in*** : Mark
104     user 4  ***ideal***
103     user 3  ***ideal***
101     user 1  ***ideal***
102     user 2  ***log out*** : since 5 mnt
105     user 5  ***log in*** : Mark
104     user 4  ***ideal***
103     user 3  ***log out***

クエリは次の目的で設計する必要があります。

         log in ideal   log out
user 1    2       0        3
user 2    0       2        5
user 5    0       2        1
          ------------------
Total      2      4        9

ご検討いただきありがとうございます。ジェイ

4

1 に答える 1

0

これが最も最適化された方法であるかどうかはわかりませんが、テーブル名が次の場合comments(または必要に応じて以下を調整):

SELECT user, IFNULL(login,0) as login, IFNULL(ideal,0) as ideal,
       IFNULL(logout,0) as logout
FROM (
 SELECT userid, user
 FROM comments
 GROUP BY userid
) c
LEFT JOIN (
 SELECT userid, count(userid) AS login
 FROM comments
 WHERE comment LIKE '%log in%'
 GROUP BY userid
) c1 ON c.userid=c1.userid
LEFT JOIN (
 SELECT userid, count(userid) AS logout
 FROM comments
 WHERE comment LIKE '%log out%'
 GROUP BY userid
) c2 ON c.userid=c2.userid
LEFT JOIN (
 SELECT userid, count(userid) AS ideal
 FROM comments
 WHERE comment LIKE '%ideal%'
 GROUP BY userid
) c3 ON c.userid=c3.userid
于 2012-08-23T15:52:12.663 に答える