我正在尝试为我正在制作的游戏设置一个高分板。在棋盘上,我对另外两个棋盘、玩家和武器使用外键。每个分数都存储了玩家在那次跑步中使用的四种武器。表是这样设置的:
Scores
id|playerid|score|weapon0id|weapon1id|weapon2id|weapon3id
Players
id|name
Weapons
id|name
我想从分数表中选择多行,并将 ID 替换为适当的名称。我可以使用以下语句获得正确的玩家名称和一种武器:
SELECT scoreID, Players.playerName, scoreVal,
Weapons.weaponLabel, scoreW1, scoreW2, scoreW3
FROM Scores, Players, Weapons
WHERE Players.playerID = scorePlayer AND Weapons.weaponID = scoreW0
我看过的所有地方都表明,这是从外键引用的行中获取值的最佳方法。它适用于玩家名称,但似乎无法扩展它以一次填写多个武器名称。对剩余的武器使用 OR 或使用武器 ID IN (w0,w1,w2,w3) 似乎每个武器都有一行,而不是每个武器在适当位置的一行。
有没有办法只使用 select 语句来获得正确的武器名称?或者我是否需要额外的代码循环并用正确的名称替换每个武器 ID?