オンライン ゲーム (DayZ) にログインしているプレイヤーのリストを取得しようとしています。バックエンド データベースは MySQL であり、ユーザーがログインしているかどうかを判断する方法は単純ではありません。ヘルプを使用できるこのクエリを作成しています。
基本的にplayer_login
、プレイヤーがシステムにログインおよびログアウトするたびに新しいエントリを作成するという名前のテーブルがあります。ユーザーがログインすると、という名前のフィールドaction
が に設定され2
ます。ユーザーがログアウトすると、action
フィールドは に設定され0
ます。ここにいくつかのサンプルデータがあります(簡略化されています)
LoginID PlayerUID DateStamp Action
126781 79067462 2013-08-01 13:16:28 0
126777 79067462 2013-08-01 12:59:22 2
126775 79067462 2013-08-01 12:42:10 0
126774 79067462 2013-08-01 12:41:34 2
126773 79067462 2013-08-01 12:38:38 0
次のクエリを使用して、テーブルにクエリを実行して、単一のユーザーがログインしているかどうかを確認できます..
SELECT PlayerUID, Action
FROM player_login
WHERE PlayerUID = 79067462
ORDER BY Datestamp DESC
LIMIT 1
結果が の場合0
、プレイヤーが最後に行ったのはログインであり、したがってオンラインです。値が の場合2
、プレーヤーが最後に行ったのはログアウトであり、そのためオフラインです。私が苦労しているのは、このクエリを、最新のAction
値がある PlayerUID のリストを返すものに変換して、0
現在オンラインのすべてのプレイヤーを取得することです。