Comment faire un GROUP BY et ORDER BY

Signaler
Messages postés
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
-
Messages postés
32474
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
-
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
A voir également:

4 réponses

Messages postés
32474
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
347
Bonjour,
Il faut que tu mettes dans le SELECT le champ sur lequel tu veux grouper
SELECT clause, groupe 
FROM base
GROUP BY clause


Messages postés
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
3
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 ...
Messages postés
32474
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
347
Ben tu ajoutes le ID dans le select
Messages postés
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
3
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"
Messages postés
32474
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
347
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 ?
Messages postés
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
3
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
Messages postés
32474
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
347
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)