我目前正在为我的运动队制定一个联盟系统。梯子,如某些视频游戏中所见。 这是一个移动网站,允许教练创建游戏,并监控球员的表现。
我让游戏自动平衡,考虑玩家的经验和积分,然后,我给予胜利者团队的所有玩家奖励积分,并从失败者中删除积分。
我有一个相对简单的数据库。 3桌。
game_joueur beeing一个关联表,我注册了每个新的游戏玩家ID,他已经播种的团队,之后,用获得的积分更新奖励字段,并使用整数更新结果字段(1 =丢失,2 =胜利)用户:id - 名称
游戏:id - ETA - cration_date
game_joueur:id-id_game - id_joueur - team - result - bonus
通过这种方式,我可以在玩家统计数上加总奖金并得到总积分。
您可以在这里更好地查看表格:
http://sqlfiddle.com/#!2/d3e06/2
我试图完成的是每个玩家的统计页面,从数据库中检索他最成功的伙伴(他赢得最多比赛的人)的名字,以及他最糟糕的盟友,他失去的人最匹配的。
这就是我在用户统计页面上的操作:
SELECT
(SELECT COUNT(lad_game_joueur.result) FROM lad_game_joueur WHERE result = 1 AND lad_game_joueur.id_joueur = lad_user.id) as lose,
(SELECT SUM(lad_game_joueur.bonus) FROM lad_game_joueur WHERE lad_game_joueur.id_joueur = lad_user.id) as points,
lad_user.id as id ,
(SELECT COUNT(lad_game_joueur.result) FROM lad_game_joueur WHERE lad_game_joueur.id_joueur = lad_user.id AND result =2) as win,
lad_user.name
FROM lad_user,lad_game_joueur
WHERE lad_game_joueur.id_joueur = lad_user.id AND lad_user.id
='.$id_joueur.'
GROUP BY lad_user.id
ORDER BY puntos DESC
我确定这不是最好的方法,但它有效:)(我不是sql专家)
如何调整此查询以恢复我正在寻找的信息?
我不介意再做一次查询。
提前多多感谢!
本
答案 0 :(得分:0)
好的,我终于找到了办法。 这就是我所做的:
SELECT
SUM(result)as result_sum, sum(Bonus) as bonus_sum, id_joueur
from lad_game_joueur
where result= 2
and id_game in
(SELECT lad_game_joueur.id_game from lad_game_joueur,lad_game where id_joueur=2
AND result= 2 and lad_game_joueur.id_game=lad_game.id)
group by id_joueur
order by result_sum DESC, bonus_sum desc
如你所见,如果我和这个人赢了两场比赛,那么结果的总和会给我4分,但我只是在php和voilà上除以2:)