[RESOLU] GROUP BY avec MySQL 5.7

Eléphant du PHP | 138 Messages

28 janv. 2019, 07:48

Hello,

Je suis en train de passer un site en PHP7 et pour le tester, je me suis monté un serveur virtuel avec :
Ubuntu 18.04 Server
Apache 2.4.29
PHP 7.2.10-0
MySQL 5.7.25-0

Et je bute plus que royalement sur un problème qu'est en train de me rendre fou (et à en suivre les résultat de mes recherches sur le net, je ne suis pas le seul) : GROUP BY

J'ai une de type SELECT avec 2 ou 3 tables jointes, ca marchait avant (lol), mais sur ce serveur , niet.
#1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'dbe90.vote_semainetmp.artist' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Très bien le me dit que ma requête est un peu fouillis, que certaines colonnes sont en double ou triple donc j'épure, j'épure , j'épure, mais toujours pareil (hormis le nom de colonne qui diffère) ...
Je vais jusqu'à en réduire à une des plus simples requêtes :

Code : Tout sélectionner

SELECT * FROM vote_semainetmp GROUP BY artist
Bah non, impossible !
#1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'dbe90.vote_semainetmp.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Qu'est-ce que c'est qu'c'te blague ?!
Je ne comprends pas le sens du message d'erreur (que ce soit en anglais ou si je traduis), encore moins les explications qu'on peut trouver par ci par là, encore moins quel requête je dois faire pour que ça marche (au pire je peux toujours modifier le sql_mode mais bon ...).

Merci pour votre aide :)
Couiinnn
Un Couin vaut mieux que Deux tu couineras :D

Mammouth du PHP | 1560 Messages

28 janv. 2019, 09:24

Il faut que tu nous précise la raison de ton group by, y a t il un count, sum, max, ... dans ton select ?
sinon, quelle utilité a t il ?

Dans tous les cas, la clause group by doit comprendre tous les champs qui sont dans ton select sauf ceux qui sont utilisé dans des fonctions de stat (comme celle cité pluas haut).

l'autre solution mais je la sconseille pas est de modifier le paramètre sql_mode mais cela n'est pas possible dans tous les environements.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Eléphant du PHP | 138 Messages

28 janv. 2019, 15:27

Salut Spol,

Merci pour ta réponse rapide :)
Dans tous les cas, la clause group by doit comprendre tous les champs qui sont dans ton select sauf ceux qui sont utilisé dans des fonctions de stat (comme celle cité pluas haut).
Je crois que cette explication est bien plus simple que tout ce que j'ai pu lire !

En effet, j'ai fais quelques essais (simples) concluants.
Je vais devoir repenser quelques requêtes masi ca va il n'y en a pas beaucoup de ce type.

Je passe en R2solu pour le moment :)

Merci
Un Couin vaut mieux que Deux tu couineras :D