Page 1 sur 1
Selection de valeurs uniques...
Posté : 09 juin 2005, 14:17
par didjiridou
Bonjour à tous,
Je souhaiterais prendre dans ma base de donnée des valeurs uniques.
Donc mon exemple concret, j'ai une table avec les valeurs de ma liste des scores de mes questionnaires.
Pour le moment, si une personne fait les 10 premiers score, elle sera affichée 10 fois. Je souhaiterais donc, que cette personne n'apparaisse qu'une seule fois et que l'on affiche son meilleur score.
J'ai deja essayé Group by, mais le probleme est qu'il ne va pas specialement m'afficher le meilleur score
Quelqu'un sait il m'aider?
Merci
MAx
Posté : 09 juin 2005, 14:20
par Rei Itchido
Peut-être ORDER BY score DESC GROUP BY personne?
Posté : 09 juin 2005, 14:24
par zeus
Code : Tout sélectionner
SELECT nom, score FROM Table_Score GROUP BY nom HAVING MAX(score)
Devrait grouper les scores par nom et afficher le score le plus grand
Posté : 09 juin 2005, 14:25
par didjiridou
Ben le probleme c'est que Group by doit se trouver avant order by... Et donc il me selectionnes automatiquement en fonction de l'id j'ai l'impression

Posté : 09 juin 2005, 14:30
par didjiridou
Code : Tout sélectionner
SELECT nom, score FROM Table_Score GROUP BY nom HAVING MAX(score)
Devrait grouper les scores par nom et afficher le score le plus grand
Cela ne fonctionne pas

Plus rien ne s'affiche
Mon champ score est en int, est ce que c'est bon?
Posté : 09 juin 2005, 14:35
par Cyrano
Ça , ça devrait répondre à ta question
Code : Tout sélectionner
SELECT DISTINCT(nom) MAX(score)
FROM Table_score
GROUP BY nom
Posté : 09 juin 2005, 14:37
par zeus
Excuse moi,j'ai écrit n'importe quoi
Tiens, celle là fonctionne, j'ai testé !!!
Posté : 09 juin 2005, 14:38
par Rei Itchido
!!!
T'as dit que tu ferais un effort

Posté : 09 juin 2005, 14:40
par zeus
!!!
T'as dit que tu ferais un effort

Oups
c'est plus fort que moi
Mais continuez à me le faire remarquer, je crois que c'est un bon moyen pour que j'arrete
Posté : 09 juin 2005, 16:54
par didjiridou
Cela ne fonctionne pas
Si le meme utilisateur a fait 5 questionnaires et que le premier etait pas le meilleur, il va correctement afficher le meilleur score, mais il sera a la position de son premier questionnaire
Je ne sais pas si c'est tres compréhensible tout ca

Posté : 09 juin 2005, 17:02
par zeus
Attend, je ne comprend pas très bien, j'ai construit une requete de manière à ce que la table
a:5
b:3
a:7
c:1
c:14
a:1
b17
retourne
a:7
b:17
c:14
C'est pas ça ?
Je n'ai pas compris ta dernière réponse
Posté : 09 juin 2005, 17:06
par didjiridou
Il faudrait dans ce cas ci que cela affiche :
b:17
c:14
a:7
donc que cela soit ordonné par la valeur du score, puis ensuite par la veleur du tps du questionnaire que je n'ai pas encore.
J'ai donc mis ce code ci :
Code : Tout sélectionner
$requete = "SELECT pseudo , MAX(score) , secondes , DATE_FORMAT(date,'%d-%m-%Y') AS datefr FROM quest GROUP BY pseudo order by score DESC";
Mais apparemment cela ne fonctionne pas!

Posté : 09 juin 2005, 17:13
par didjiridou
Ca y est, cela fonctionne
Voici mon code :
Code : Tout sélectionner
$requete = "SELECT pseudo , MAX(score) as score2 , MIN(secondes) as secondes2 , DATE_FORMAT(date,'%d-%m-%Y') AS datefr FROM quest GROUP BY pseudo order by score2 DESC, secondes2 ASC LIMIT 30";
Merci à vous
