私は、ユーザーconnection/disconnection
ログテーブルを持っている:MySQLの - 合計活動時間の選択ログテーブルから
id user_id timestamp action
1 8 2017-05-01 10:25 connect
2 8 2017-05-01 11:00 disconnect
3 8 2017-05-01 12:10 connect
3 15 2017-05-01 12:11 connect
3 8 2017-05-01 12:10 disconnect
:例えば8活動時間を時間で一日の間に2017-05-01
?私は、時間を接続し、
SELECT u.*,u2.* FROM `user_log` as u
INNER JOIN `user_log` as u2 ON u2.action = 'disconnect'
AND u.user_id = u2.user_id AND u.`timestamp` < u2.`timestamp`
WHERE u.action = 'connect'
GROUP BY u.id
最初の行を保つユーザーとdisconnect
時間が大きいleft join
ユーザーからconnections
を選択しようとしてい
は、それが働いたが、私はそれが最善のアプローチであるのかはわからないようです、また、ユーザーが05-01
に接続されているが05-02
を切断したときに覆われていない場合があるので、それは私が05-01
12時、私はこのクエリを使用することができると思う
| user_id | timestamp_login | timestamp_logout' - ユーザーがログインしている間、ログアウトは 'null'です。悪い方法ではありません。 – panther
再生のための@pantherありがとう。しかし、問題は、このテーブル構造が必要である理由である接続と切断の期間中に、ユーザーが多くの不注意な操作を行うことができることです。 – Armen
ああ、わかりませんでした...このテーブル構造を使用して、例は同じであるようです。 – panther