[MySQL]HELP requete

HELP requete [MySQL] - PHP - Programmation

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

Reply

Marsh Posté le 09-07-2004 à 17:22:21   

Reply

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 ;)

Reply

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.


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

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
 
 :(


Message édité par BaDaBoOm le 09-07-2004 à 17:32:11
Reply

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 ...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

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+

Reply

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)...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

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

Reply

Marsh Posté le 09-07-2004 à 17:56:22    

ben du coup je sèche aussi... :(


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 09-07-2004 à 18:51:08    

up

Reply

Marsh Posté le 09-07-2004 à 18:51:08   

Reply

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é.
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 ...


Qu'est-ce qu'il faut pas lire comme connerie :pfff:
 
La bonne réponse est
SELECT pseudo, AVG(noteper) FROM mp3 GROUP BY pseudo ORDER BY AVG(noteper) DESC LIMIT 1

Reply

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

Reply

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

Reply

Marsh Posté le 09-07-2004 à 20:04:38    

BaDaBoOm a écrit :

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


 
Dans ce cas, jette MySQL. Avec n'importe quel autre DBMS, ça fonctionne (sauf la clause LIMIT)

Reply

Marsh Posté le 09-07-2004 à 20:15:51    

je n'ai que mysql chez mon hebergeur

Reply

Marsh Posté le 09-07-2004 à 20:43:35    

gizmo a écrit :

Qu'est-ce qu'il faut pas lire comme connerie :pfff:


+1 :D
 

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)


Message édité par Mara's dad le 09-07-2004 à 20:44:02

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-07-2004 à 20:48:42    

Obligé de passer par un alias ?![:wam] Je le crois pas[:mlc] MySQL me décevra chaque jour un peu plus :/

Reply

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 :o


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

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


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

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.

Reply

Marsh Posté le 09-07-2004 à 20:58:02    

Hey Ho l'untaigrisse, tu t'es re-laissé pousser la barbe au moins :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

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 !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-07-2004 à 21:05:06    

nikel ca marche , je prends la 2eme solution de mara's dad !
 
merci encore

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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