Normalement ça devrait t'aider :
http://sql.developpez.com
Version imprimable
Normalement ça devrait t'aider :
http://sql.developpez.com
Merci MoDDiB, c'est juste ce dont j'avais besoin !
Bon retour parmi les adeptes de Sade !
Pour ta requête quelque chose de ce type devrait suffire (Attention : Syntaxe Oracle qui peut légèrement différée sur MySQL) :
SELECT Nom, High_Score
FROM
(SELECT nom, MAX(score) High_Score
FROM table
GROUP BY nom
)
ORDER BY High_Score DESC;
A voir après comment tu veux limiter le nombre d'enregistrement en retour, soit via la requête soit par toi même.
Merci Scriuiw,
alors, sur MySQL, et sans passer par 2 select, j'ai essayé avec ça:
afin d'avoir les 10 meilleurs joueurs.Code:
1
2
3
4
5 SELECT name, MAX( score ) AS max_score FROM scores GROUP BY name ORDER BY max_score DESC LIMIT 10
Pour exécuter ta requête en MySQL, je dois rajouter un alias pour la "sous-table", comme ceci:
Maintenant, les données "nom" et "score" ne sont pas suffisantes, puisque j'en récupère d'autres, comme le niveau, la durée de la partie, etc...Code:
1
2
3
4
5
6
7 SELECT name, High_Score FROM (SELECT name, MAX(score) as High_Score FROM scores GROUP BY name ) as T ORDER BY High_Score DESC
Je suppose que je dois faire un JOINT entre ma "table des max" et la table des scores.
En fait, la sous-requête en l'état ne sert à rien, ta première requête est très bien ainsi.
La sous-requête est une erreur de conception car j'était parti sur une autre solution avec limitation à 10 (Via ROWNUM), bref....
Si toutes tes données sont dans la même table, pas besoin de jointure, dans le cas contraire, tu en auras effectivement besoin (Mais ça dépend en fait !)
En fait, en essayant ça:
donc, en ajoutant le champs "level" au select, je m’aperçois que je n'ai pas la donnée qui correspond au score max.Code:
1
2
3
4
5 SELECT name, MAX( score ) AS max_score, level FROM scores GROUP BY name ORDER BY max_score DESC LIMIT 10
J'ai essayé une jointure comme ça:
et là, ça passe. Mais je ne sais pas si je suis obligé ou non de passé par la jointure...Code:
1
2
3
4
5
6
7
8
9 SELECT scores.name, score, level FROM scores JOIN (SELECT name, MAX(score) as High_Score FROM scores GROUP BY name ) as t WHERE score = High_score ORDER BY High_Score DESC
Le problème avec la conception actuelle de ta 1ere requête, c'est que tu prends le score maximum pour le tuple Nom et level, donc tu auras les 10 meilleurs score par joueur et level.
As-tu une colonne ID en tant que PK pour ta table joueur et score ?
Autrement dit, qu'elle est la PK de ta table score ?
Si tel est le cas, alors une requête de ce type devrait faire l'affaire (Attention, encore une fois syntaxe Oracle, je n'ai plus fait de MySQKL depuis... pifouu..) :
Je n'ai volontairement pas mis de limitation au nombre de retours vu que tu le gères très bien sous MySQLCode:
1
2
3
4
5
6
7
8 SELECT ... (Tout ce qui te fait plaisir) FROM Table_Score S WHERE EXISTS (SELECT Nom, MAX(Score) FROM Table_Score WHERE S.Id = Id )
Sinon la 2eme requête peut faire l'affaire.
Youhou il revient :D
ça c'est une bonne nouvelle :P
Concernant ta requête, je pense que la solution de Scriuiw est la plus propre, car ça évite d'avoir un JOIN dans ta requête, et la requête sera plus efficace :)
Par contre, si j'ai bien suivi ce que tu dis, à priori l'Id de l'utilisateur est le nom.
Travaillant avec Access, et après plusieurs tests, même si je pense que le résultat pourrait être mieux, tu peux écrire un truc dans ce genre :
Celle-ci me donne le résultat recherché, par rapport à ta demande :)Code:
1
2
3
4
5
6 SELECT name, level, score FROM scores T INNER JOIN (SELECT scores.nom, Max(scores.score) AS MaxScore FROM scores GROUP BY scores.name) AS ScoreMax ON (T.score =ScoreMax.MaxScore) AND (T.name= ScoreMax.name);
Je n'ai pas de table "joueur", il n'y a pas d'inscription.
Toutes les données sont contenues dans la table "scores".
La PK est composée du joueur, du score, de la date et de la version.
Je n'arrive pas à faire fonctionner ta requête, elle me renvoie toutes les entrées de la table.
Salut illight !
Oui, je suis re-là :)
Merci, ta requête fait bien ce que je cherche à faire (et que je fais avec ma jointure).
YES ! Cirrus is back !
Bon pour la requête SQL, vous avez l'air bien parti, je botte en touche, p'tite fatigue :aie:
Bonsoir et bon weekend à tous !
Pour vous faire un peu patienter, et comme vous n'avez rien à vous mettre sous la dent depuis des mois, je vous présente une nouvelle vidéo dans laquelle vous verrez un nouveau sort en action (un sort que vous allez aimer, je le sens ;) ), et la découverte d'une salle secrète à l'aide d'un parchemin de révélation.
Tout est encore "en travaux", les nouveaux graphismes sont temporaires et il faut éventuellement encore ajouter des effets / animations et sons.
Ce qui a été développé depuis la dernière release:
- quelques objets,
- un nouveau monstre + 1 nouvelle variante de monstre,
- un nouveau sort,
- une dizaine de potions (à boire à vos risques et périls),
- de petites améliorations ici et là,
- des surprises :P
La vidéo:
https://www.youtube.com/watch?v=c1Ym...ature=youtu.be
Purée, c'est la grande classe quand même !! 8O
J'aime beaucoup les nouvelles musiques qui faisaient le charme du début, la nouvelle version a beaucoup de cachet ! Bravo à l'artiste !
Sinon, je retrouve avec une certaine émotion, les fameuses Citrouilles maudites ... :')
Super boulot les gars ! :ccool:
Merci Vetea !
Pour la musique, un "retour à la source", avec de la guitare, et le bon vieux thème (qui n'est pas sur cette vidéo, lui), était en effet souhaité, je verrai bien ce qu'en pensent les joueurs lorsque cette prochaine version sera entre leurs mains :P
Moi aussi j'aime beaucoup ;)
https://www.youtube.com/watch?v=XpNpstRsoNU
Très sympa la vidéo Rayek ! :ccool:
Super, le test-vidéo, Rayek ! :ccool:
Et j'ai bien rigolé en t'écoutant pester sur le compagnon slime ;)
Merci merci !
Un point sur l'avancée du jeu
____________
Dernièrement, j'ai bossé un peu sur l'optimisation du jeu, et j'ai enfin batché les particules des tirs (avant, chaque particule créée était une nouvelle entité, elles étaient triées (Z-sort), et chacune avait son draw call).
En résulte un (léger) gain de performance sur les scènes de stress.
Nous avons également ajouté 8 succès au jeu, ça va faire plaisir à ceux qui ont déjà fini à 100% la version actuelle :P.
Ça donne un total de 24 succès, et nous travaillons sur les nouvelles récompenses qui seront débloquées, donc de nouveaux objets.
D'ailleurs, puisqu'on parle de ceux qui finissent le jeu, dans la prochaine version, pour vous, il y aura, euh... enfin, bon, vous verrez.
Sinon, toujours pas de date de sortie prévue, évidemment, et elle ne sera pas compatible avec les sauvegardes (jeu, succès, scores, etc...) des jeux précédents, re-évidemment :whistle2:
____________
Image bonus d'un "test de charge"
Pièce jointe 187522
ça serait bien que tu intègre les update, parce que redébloquer les succès, c'est parfois pénible et pas facile :mrgreen: (je prend l'exemple pour débloquer la fée Scarlett, je l'ai eu un peu par hasard :mrgreen:)
A la limite, pour ma part, les scores c'est pas grave, mais les succès, c'est plus gênant.
Faudra que tu m'expliques comment tu fais pour avoir 1800 PV par contre :ptdr:
Vivement la prochaine sortie en tout cas. Pour ma part, j'ai toujours pas fini la version de Démo (la dernière), je me fais toujours avoir par les croque mitaine (pénibles ces méchants). Personne n'aurai un truc pour les battre ceux-là ? :mrgreen:
Comme tout est susceptible d'être encore modifié, c'est pas évident... :?
Par exemple, les récompenses peuvent varier entre deux versions, ce que tu as eu en obtenant un succès lors d'une version ne correspond pas forcément à ce que tu auras dans la dernière.
Citation:
(je prend l'exemple pour débloquer la fée Scarlett, je l'ai eu un peu par hasard :mrgreen:)
Citation:
je me fais toujours avoir par les croque mitaine (pénibles ces méchants). Personne n'aurai un truc pour les battre ceux-là ? :mrgreen:
Sans dévoiler, ça marche aussi avec le blob explosif dans la salle des challenges (quand tu le lances sur un oeil, généralement, ça explose pratiquement tout) ? ou il faut le faire avec une arme ?