Comment faire un GROUP BY et ORDER BY

yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 - 24 sept. 2018 à 08:51
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 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
A voir également:

4 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
24 sept. 2018 à 11:55
Bonjour,
Il faut que tu mettes dans le SELECT le champ sur lequel tu veux grouper
SELECT clause, groupe 
FROM base
GROUP BY clause


0
yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 3
24 sept. 2018 à 12:59
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 ...
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
24 sept. 2018 à 13:18
Ben tu ajoutes le ID dans le select
0
yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 3
24 sept. 2018 à 14:06
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"
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
Modifié le 24 sept. 2018 à 18:13
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 ?
0
yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 3
Modifié le 24 sept. 2018 à 18:46
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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
24 sept. 2018 à 23:27
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)
0
Rejoignez-nous