Comment faire un GROUP BY et ORDER BY

Messages postés
132
Date d'inscription
dimanche 15 février 2009
Dernière intervention
29 octobre 2018
- - Dernière réponse : jordane45
Messages postés
23610
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 décembre 2018
- 24 sept. 2018 à 23:27
Bonjour à tous,
Je voudrais faire une requête SQL avec un GROUP BY et ORDER BY.

Ma requête était
SELECT groupe from base GROUP BY base ORDER BY id

Avec la mise à jour de PHP, j'obtiens maintenant une erreur
ORDER BY clause is not in GROUP BY clause and contains nonaggregated column

Celà vient du paramètre only_full_group_by

Comment faire pour classer mes résultats (dans le ORDER BY) dans les agréger (dans le GROUP BY) ?

Merci d'avance
Afficher la suite 

Votre réponse

4 réponses

Messages postés
23610
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 décembre 2018
0
Merci
Bonjour,
Il faut que tu mettes dans le SELECT le champ sur lequel tu veux grouper
SELECT clause, groupe 
FROM base
GROUP BY clause


Commenter la réponse de jordane45
Messages postés
132
Date d'inscription
dimanche 15 février 2009
Dernière intervention
29 octobre 2018
0
Merci
Désolé je me suis trompé dans la requête. Il fallait lire:
SELECT groupe from base GROUP BY groupe ORDER BY id


Ca me retourne une erreur parce que le id de la clause ORDER BY n'est pas dans le SELECT. Et si je rajoute le id dans le SELECT, j'ai une erreur parce que le id n'est pas dans la clause GROUP BY

Etrange comportement ...
jordane45
Messages postés
23610
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 décembre 2018
-
Ben tu ajoutes le ID dans le select
yoanpg
Messages postés
132
Date d'inscription
dimanche 15 février 2009
Dernière intervention
29 octobre 2018
-
J'ai écrit "Et si je rajoute le id dans le SELECT, j'ai une erreur parce que le id n'est pas dans la clause GROUP BY"
jordane45
Messages postés
23610
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 décembre 2018
-
Ca m'étonne...
Pourrais tu nous montrer la requête EXACTE que tu as écrit ainsi que le message d'erreur exact et complet que tu rencontres ?
Commenter la réponse de yoanpg
Messages postés
132
Date d'inscription
dimanche 15 février 2009
Dernière intervention
29 octobre 2018
0
Merci
Mon code est :
$mysqli->query("SELECT Groupe FROM base GROUP BY Groupe ORDER BY ID") or die($mysqli->error);


Et quand j'ouvre la page j'ai
Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'yoanpg.base.ID' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Commenter la réponse de yoanpg
Messages postés
23610
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 décembre 2018
0
Merci
Tu lui demandes de trier sur l' ID ... alors que tu fais un GROUP BY.
Si un Groupe dispose de plusieurs ID ... Sur quel ID doit-il trier ? Le premier du groupe ou le dernier ?
Normal que mysql n'apprecie pas.

Tu peux éventuellement essayer (comme je te l'avais indiqué ..... )
SELECT ID,Groupe
 FROM base 
GROUP BY Groupe
ORDER BY ID


Et sinon.. tu peux toujours aller masquer cette erreur en désactivant la valeur du only_full_group_by ( modifiable dans le fichier de configuration de mysql my.cnf ou my.ini selon ton OS) (Ne pas oublier de redémarrer mysql après la modification)
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.