0

オンライン ゲーム (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現在オンラインのすべてのプレイヤーを取得することです。

4

3 に答える 3