[résolu][MySQL] Sélection groupée et comptage


erestrebian
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 460
Inscription: 15 Juin 2007

[résolu][MySQL] Sélection groupée et comptage

Message le Lun Sep 22, 2008 8:58

Bonjour,

Je voudrais savoir s'il est possible de compter seulement suivant l'utilisateur.

Voici la table :
Code: Tout sélectionner
CREATE TABLE utilis_niveau (
  num_utilisateur int(6) NOT NULL,
  num_niveau smallint(3) NOT NULL,
  nb_enigmes_rep int(5) NOT NULL,
  PRIMARY KEY  (num_utilisateur,num_niveau)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


Code: Tout sélectionner
SELECT num_utilisateur, (num_niveau*nb_enigmes_rep) as pts FROM utilis_niveau ORDER BY (num_niveau*nb_enigmes_rep) DESC


Je voudrais améliorer cette requête afin que pts soit l'ensemble des points de l'utilisateur. J'ai essayé le group by num_utilisateur mais ça ne me donne que le premier niveau.

Exemple de ce que je veux :

utilis |pts
1 |120
5 |118
2 |110
...

ce que j'ai pour l'instant parce que le groupement se fait par utilisateur ET par niveau:

utilis |pts
1 |60
1 |40
1 |20
5 |70
5 |48
2 |50
2 |60
...

Merci par avance de vos lumières!
Dernière édition par erestrebian le Lun Sep 22, 2008 9:55, édité 1 fois.


julienr
WRInaute impliqué
WRInaute impliqué
 
Messages: 911
Inscription: 5 Aoû 2003

Message le Lun Sep 22, 2008 9:38

Code: Tout sélectionner
SELECT num_utilisateur, sum(num_niveau*nb_enigmes_rep) as pts FROM utilis_niveau GROUP BY num_utilisateur ORDER BY sum(num_niveau*nb_enigmes_rep) DESC

?


erestrebian
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 460
Inscription: 15 Juin 2007

Message le Lun Sep 22, 2008 9:55

Merci beaucoup, c'est exactement ça que je voulais faire...


julienr
WRInaute impliqué
WRInaute impliqué
 
Messages: 911
Inscription: 5 Aoû 2003

Message le Lun Sep 22, 2008 9:56

de rien :)


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3827
Inscription: 14 Sep 2006

Message le Lun Sep 22, 2008 17:02

Mon pti grin de sel :mrgreen:

Je me demande si avec un ORDER BY pts DESC à la place de ORDER BY sum(num_niveau*nb_enigmes_rep) DESC , ça lui éviterait pas de faire 2x le même calcul ? Je suis pas sure du tout mais ça semble plus logique en tout cas.


erestrebian
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 460
Inscription: 15 Juin 2007

Message le Jeu Sep 25, 2008 8:40

Bien vu! Je sais pas si ça joue beaucoup et je n'ai pas trop de visites pour l'instant mais comme tout le monde, j'espère en avoir des millions d'ici la fin de l'année :lol: :lol: :lol:


julienr
WRInaute impliqué
WRInaute impliqué
 
Messages: 911
Inscription: 5 Aoû 2003

Message le Jeu Sep 25, 2008 8:49

YoyoS a écrit:Je me demande si avec un ORDER BY pts DESC à la place de ORDER BY sum(num_niveau*nb_enigmes_rep) DESC , ça lui éviterait pas de faire 2x le même calcul ? Je suis pas sure du tout mais ça semble plus logique en tout cas.

logique pas sûr, moins source d'erreur oui sans aucun doute :-)
en tout cas le explain donne le même plan d'exécution, mysql c'est pas access version 1.0 ;-)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité