私は2つのテーブルを持っています。
ユーザー:
int player_id
varchar player_name
ゲーム:
int game_id
int player_id1
int player_id2
プレイヤー ID をパラメーターとして受け取り、各ゲームの情報とプレイヤーの名前を返すクエリを作成したいと考えています。これまでのところ、私が持っているものは次のとおりです。
SELECT
game_id,
player_id1,
player_id2,
from GAMES, GAME_STATES
where player_id1=@playerid or player_id2=@playerid
私が立ち往生している部分は、プレイヤーIDとともにプレイヤーの名前を返す簡単な方法です。返されるクエリには 5 つの列があり、ゲーム ID が 1 つ、プレイヤー ID ごとに 2 つ、名前ごとに 2 つです。
私が考えた1つの解決策は次のとおりです。
SELECT
game_id,
player_id1,
(select player_name from USERS where player_id=player_id1) as player_name1, player_id2,
(select player_name from USERS where player_id=player_id2) as player_name2,
from GAMES, GAME_STATES
where player_id1=@playerid or player_id2=@playerid
ただし、返される行ごとにさらに 2 つのクエリがあるため、これはデータベースで多くの余分な作業のように見えます。そうしなければならない場合、クライアント側で 2 番目のクエリとして名前を要求する方がよい選択肢ではないかと考えています。次に、クライアントは一意の ID のリストを作成し、それらすべてに対して 1 つのクエリを実行できます。クライアントとサーバーが同じデータ センターにあるため、遅延についてはあまり心配していません。
ご協力ありがとうございました。