L'erreur « L'expression de la liste SELECT n'est pas dans la clause GROUP BY et contient une colonne non agrégée » libelle'," est généralement rencontré lors de l'exécution d'une requête avec une colonne non agrégée dans la liste SELECT et la clause GROUP BY. Pour résoudre cette erreur, il est nécessaire de s'assurer que toutes les colonnes non agrégées sont incluses dans la clause GROUP BY ou sont agrégées à l'aide de fonctions telles que SUM(), AVG() ou COUNT().
Dans Dans ce cas précis, la requête tente de sélectionner des colonnes comprenant 'libelle', 'credit_initial', 'disponible_v' et 'montant'. Cependant, seul « libelle » est inclus dans la clause GROUP BY, tandis que « montant » n'est pas agrégé. Pour résoudre ce problème, modifiez la requête pour inclure 'montant' dans la clause GROUP BY ou l'agréger à l'aide de SUM() ou d'une autre fonction appropriée.
SOLUTION
Voici une version mise à jour de la requête qui inclut « montant » dans la clause GROUP BY :
SELECT libelle, credit_initial, disponible_v, SUM(montant) AS total_montant FROM fiche, annee, type WHERE type.id_type = annee.id_type AND annee.id_annee = fiche.id_annee AND annee = YEAR(current_timestamp) GROUP BY libelle, credit_initial, disponible_v ORDER BY libelle ASC
Alternativement, la requête peut être ajustée pour agréger 'montant' à l'aide de SUM() :
SELECT libelle, credit_initial, disponible_v, SUM(montant) FROM fiche, annee, type WHERE type.id_type = annee.id_type AND annee.id_annee = fiche.id_annee AND annee = YEAR(current_timestamp) GROUP BY libelle ORDER BY libelle ASC
En effectuant ces modifications, la requête sera conforme au mode GROUP BY strict de MySQL 5.7 et évitera l'erreur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!