HELP requete [MySQL] - PHP - Programmation
Marsh Posté le 09-07-2004 à 17:26:42
Y'a une catégorie SGBD, c'est plus approprié que php
Sinon je peux pas répondre à ta question
Marsh Posté le 09-07-2004 à 17:28:21
Au lieu de grouper par pseudo, tu groupe par AVG(notper) dans l'ordre décroissant (DESC).
Le premier résultat de ta requête sera celui avec AVG(notper) le plus grand.
Marsh Posté le 09-07-2004 à 17:31:52
g essayé ca :
SELECT pseudo, AVG( noteper )
FROM mp3
WHERE noteper != 0
GROUP BY AVG(noteper)
mais :#1111 - Utilisation invalide de la clause GROUP
Marsh Posté le 09-07-2004 à 17:35:49
group ne doit pas être défini comme une "clé" de ta table, et tu ne peux ordonner des enregistrements qu'autour d'une clé.
Il faut que tu change la configuration de ta table.
Au lieu de ne défirnir que pseudo comme clé, tu défini aussi AVG(noteper).
ça devrait marcher après ...
Marsh Posté le 09-07-2004 à 17:40:41
bon ben comme je sais pas comment faire ca je vais traiter le tableau en php
merci quand meme
a+
Marsh Posté le 09-07-2004 à 17:44:10
ben si tu utilise PHPMyAdmin pour gérer ta base c'est tout simple, tu affiche les propiété de ta table et après c'est betement des cases à cocher pour définir la(les) clé(s)...
Marsh Posté le 09-07-2004 à 17:51:31
g défini noteper en primary key je sais pas si c ca mais ca ne marche tjrs pas
Marsh Posté le 09-07-2004 à 17:56:22
ben du coup je sèche aussi...
Marsh Posté le 09-07-2004 à 19:39:16
Xav_ a écrit : group ne doit pas être défini comme une "clé" de ta table, et tu ne peux ordonner des enregistrements qu'autour d'une clé. |
Qu'est-ce qu'il faut pas lire comme connerie
La bonne réponse est
SELECT pseudo, AVG(noteper) FROM mp3 GROUP BY pseudo ORDER BY AVG(noteper) DESC LIMIT 1
Marsh Posté le 09-07-2004 à 19:50:03
ca ne marche tjrs pas , il me met cette erreur :
Utilisation invalide de la clause GROUP
Marsh Posté le 09-07-2004 à 19:50:57
SQL-query :
SELECT pseudo, AVG( noteper )
FROM mp3
GROUP BY pseudo
ORDER BY AVG( noteper ) DESC
LIMIT 1
MySQL said:
#1111 - Utilisation invalide de la clause GROUP
Marsh Posté le 09-07-2004 à 20:04:38
BaDaBoOm a écrit : SQL-query : |
Dans ce cas, jette MySQL. Avec n'importe quel autre DBMS, ça fonctionne (sauf la clause LIMIT)
Marsh Posté le 09-07-2004 à 20:43:35
gizmo a écrit : Qu'est-ce qu'il faut pas lire comme connerie |
+1
SELECT pseudo, AVG(noteper) as avg_noteper FROM mp3 GROUP BY pseudo ORDER BY avg_noteper DESC LIMIT 1 |
Testé et approuvé par Mara's dad (MySql 3.23.56)
Marsh Posté le 09-07-2004 à 20:48:42
Obligé de passer par un alias ?! Je le crois pas MySQL me décevra chaque jour un peu plus
Marsh Posté le 09-07-2004 à 20:51:12
Ben en même temps, c'est quand même logique de pas recalculer le résultat de la fonction d'agrégation pour faire un tri dessus...
Sans parler de la réécrire
Marsh Posté le 09-07-2004 à 20:53:45
Pis tu peux te passer de l'alias si tu veux :
SELECT pseudo, AVG(noteper) FROM mp3 GROUP BY pseudo ORDER BY 2 DESC LIMIT 1 |
Marsh Posté le 09-07-2004 à 20:55:59
Un DBMS correct n'as pas besoin d'alias pour voir qu'il s'agit de la même valeur et, par conséquence, ne pas la recalculer.
Marsh Posté le 09-07-2004 à 20:58:02
Hey Ho l'untaigrisse, tu t'es re-laissé pousser la barbe au moins
Marsh Posté le 09-07-2004 à 20:59:22
Py j'aime bien les alias !
Ca me gonfle un noms de colonne à "avg(machin_truc)" dans le résultat !
Marsh Posté le 09-07-2004 à 21:05:06
nikel ca marche , je prends la 2eme solution de mara's dad !
merci encore
Marsh Posté le 09-07-2004 à 17:22:21
salut voila la requete que j'essais de faire :
SELECT pseudo, AVG(noteper) FROM mp3 WHERE noteper != 0 GROUP BY pseudo
cette requete fonctionne bien cependant serait il possible de spécifier dans la requete que j'ai uniquement besoin du pseudo correspondant à la plus grande valeur de AVG(noteper) ?
j'ai esayé
SELECT pseudo, MAX( AVG(noteper)) FROM mp3 WHERE noteper != 0 GROUP BY pseudo
mais cela ne marche pas
merci pour vtre aide