我有两张桌子。
用户:
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,两列代表每个玩家 id,两列代表每个玩家的姓名。
我想到的一种解决方案是:
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 个。如果我必须这样做,我想知道在客户端将名称请求作为第二个查询是否是更好的选择?然后客户端可以创建一个唯一 id 的列表,并对所有这些进行一次查询。我不太担心延迟,因为客户端和服务器位于同一个数据中心。
谢谢您的帮助。