0

这是我正在开发的游戏。我有一个 MySQL 表,每个玩家实体都包含他们每只手拿着的武器的 id,例如:

player id, playername, rhand, lhand,
1          Guy         1      2
2          OtherGuy    3      2

我有一个项目表,其中包含按 id 列出的每个项目的信息

item  name   damage_type
1     hammer crush
2     shield none
3     sword  slash

在我的服务器上解决战斗时,我通过 id 搜索每个玩家,一个是攻击者,一个是防御者所以我想要这样的结果

player id playername rhand lhand   rhand_damage_type lhand_damage_type
1         Guy        hammer shield crush             none
2         OtherGuy   sword  shield slash             none
4

1 回答 1

0
SELECT p.player_id, p.player_name, w1.name, w2.name, w1.damage_type, w2.damage_type 
FROM players p, weapons w1, weapons w2 
WHERE p.player_id = attackerId OR p.player_id=defenderId
AND p.rhand = w1.item 
AND p.lhand = w2.item

如果 plyers 也可能错过一种或两种武器:

SELECT DISTINCT player_id, player_name, w1.name, w2.name, w1.damage_type, w2.damage_type 
FROM 
(SELECT player_id, player_name, name, damage_type 
 FROM players LEFT JOIN weapons on rhand = w1.item 
 WHERE p.player_id = attackerId OR p.player_id=defenderId) as w1,
(SELECT player_id, player_name, name, damage_type 
 FROM players LEFT JOIN weapons on lhand = w2.item 
 WHERE p.player_id = attackerId OR p.player_id=defenderId) as w2
 Were w1.player_id = w2.player_id
于 2012-07-14T13:55:27.087 回答