计数,最大和多个子查询SQL

时间:2013-12-01 23:07:27

标签: mysql sql count max

我目前正在为我的运动队制定一个联盟系统。梯子,如某些视频游戏中所见。 这是一个移动网站,允许教练创建游戏,并监控球员的表现。

我让游戏自动平衡,考虑玩家的经验和积分,然后,我给予胜利者团队的所有玩家奖励积分,并从失败者中删除积分。

我有一个相对简单的数据库。 3桌。

  

用户:id - 名称

     

游戏:id - ETA - cration_date

     

game_joueur:id-id_game - id_joueur - team - result - bonus

game_joueur beeing一个关联表,我注册了每个新的游戏玩家ID,他已经播种的团队,之后,用获得的积分更新奖励字段,并使用整数更新结果字段(1 =丢失,2 =胜利)

通过这种方式,我可以在玩家统计数上加总奖金并得到总积分。

您可以在这里更好地查看表格:

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专家)

如何调整此查询以恢复我正在寻找的信息?

我不介意再做一次查询。

提前多多感谢!

1 个答案:

答案 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:)