Sql count multiples

Sql count multiples - SQL/NoSQL - Programmation

Marsh Posté le 30-11-2013 à 17:42:22    


 
Salut les gens.
 
J'ai une requette assez complexe que je n'arrive pas a visualiser...
 
J'ai fait un systeme de league que j'ai mis en place dans mon club de sport.
 
En gros c'est un ladder ( sur un site web mobile), qui gere des points/lvl individuel pour les joueurs. Algo qui genere des match équilibrés en fonctions des points des joueurs, et qui attribue des points aux joueurs apres chaque match.
 
En gros J'ai une table user (lad_user) :
 
id / name / date creation  /  streak
 
Une table game (lad_game):
 
id / etat / debut_game
 
etat qui me dit si le match est en cours ou pas.
 
Une table de liaison ou j'enregistre les evenements des parties (lad_game_joueur).
 
id / id_game / id_joueur / team  / Bonus  / result
 
id game : l'id de la partie
 
team : 1 ou 2
 
bonus: quand la partie fini l'algo attribu des point positif ou negatifs. Pour une victoire, entre +37 et +45, pour une defaite, entre -20 et -25.
 
Result : un int. 1=win, 2= lose
 
Sur ma page de stat d'utilisateur je calcul les point totaux, le nombre de victoires , ainsi que le nombre de defaites  :
 
 
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 puntos,
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
 
J'ai preferé ca ) l'ajout d'un champs"point" chez les user, car comme ca des que je supprime une game, les points de l'user sont mis à jours automatiquement, et ca permet de visualisr le gain de points a chaque partie, et de generer mes graphiques.
 
Là ou je bloque:
 
J'aimerai une requete qui me permette de trouver pour un joueur précis (donc sur sa page de stat), le partenair qui lui a fait perdre le plus de parties, ainsi que son meilleur allié, joueur avec lequel il aurait gagné le plus de parties.
 
Par exemple, mon joueur dont l'id est 2, a participé a 25 matchs, je voudrai voir lors de toutes ses parties gagnés, quelle est le partenair qui revient le plus souvent.
 
BONUS : si il y en a plusieurs ex aequo, celui lui qui lui aurait fait perdre le plus de points serait affiché. (ou gagné le plus de points).
 
C'est pas evident a deécrire, si c'est pas claire, n'hesitez pas a me demander  
 
Merci d'avance. Ben


Message édité par djbennyj le 30-11-2013 à 17:43:00
Reply

Marsh Posté le 30-11-2013 à 17:42:22   

Reply

Marsh Posté le 02-12-2013 à 15:34:20    

Trouvé :  
 
SELECT SUM(result)as result_sum, sum(Bonus) as bonus_sum, id_joueur from lad_game_joueur where result= 2 and id_joueur <> 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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed