Vous devez spécifier toutes les colonnes que vous ne l'utilisez pas pour une fonction d'agrégation dans votre GROUP BY
clause de ce genre:
select libelle,credit_initial,disponible_v,sum(montant) as 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
L' full_group_by
mode essentiellement fait de vous écrire plus idiomatiques SQL. Vous pouvez désactiver ce paramètre si vous le souhaitez. Il y a différentes façons de le faire qui sont décrites dans la Documentation de MySQL. Voici MySQL définition de ce que j'ai dit ci-dessus:
MySQL 5.7.5 et met en œuvre la détection de la dépendance fonctionnelle. Si
le ONLY_FULL_GROUP_BY SQL-mode est activé (ce qui est fait par défaut),
MySQL rejette les requêtes pour lesquelles la liste de sélection, d'AVOIR l'état, ou
COMMANDE PAR liste, reportez-vous à nonaggregated les colonnes qui ne sont ni nommés dans
la clause GROUP BY ne sont fonctionnellement dépendants. (Avant
5.7.5, MySQL ne détecte pas de dépendance fonctionnelle et ONLY_FULL_GROUP_BY n'est pas activé par défaut. Pour une description de
pré-5.7.5 comportement, voir le Manuel de Référence de MySQL 5.6.)
Vous obtenez l'erreur parce que vous êtes sur une version < 5.7.5