MS-Access - vous avez essayé d'exécuter une requête qui n'inclut pas la fonction d'agrégat spécifiée
SELECT SUM(orders.quantity) AS num, fName, surname
FROM author
INNER JOIN book ON author.aID = book.authorID;
Je reçois le message d'erreur: "vous avez essayé d'exécuter une requête qui ne comprennent pas l'expression spécifiée "fName" dans le cadre d'une fonction d'agrégation. Que dois-je faire?
source d'informationauteur blahblahvvvvv
Vous devez vous connecter pour publier un commentaire.
L'erreur est parce que
fName
est inclus dans leSELECT
liste, mais n'est pas inclus dans unGROUP BY
clause et ne fait pas partie d'une fonction d'agrégation (Count()
Min()
Max()
Sum()
etc.)Vous pouvez résoudre ce problème en
fName
dans unGROUP BY
. Mais vous serez face à la même question avecsurname
. Afin de mettre les deux dans leGROUP BY
:Note j'ai utilisé
Count(*)
où tu voulaisSUM(orders.quantity)
. Cependant,orders
n'est pas inclus dans leFROM
section de votre requête, vous devez l'inclure avant vous pouvezSum()
l'un de ses champs.Si vous avez Accès disponibles, construire la requête dans le concepteur de requêtes. Il peut vous aider à comprendre quelles sont les fonctionnalités possibles et appliquer la bonne syntaxe SQL Access.
J'ai eu un problème similaire dans un MS-Access requête, et je l'ai résolu en changeant ma équivalent
fName
à une "Expression" (par opposition à "Groupe" ou "Somme"). Aussi longtemps que tous mes champs ont été "Expression", l'Accès au générateur de requête ne nécessite pas deGroup By
clause à la fin.GROUPE peut être sélectionné à partir de la ligne de Total dans le mode création de requête dans MS Access.
Si le Total de la ligne sont pas affichés dans la vue de conception (comme dans mon cas). Vous pouvez aller à la Vue de SQL et d'ajouter le GROUPE Par la fname etc. Puis Totale de la ligne s'affichent automatiquement dans la vue de conception.
Vous devez sélectionner en tant qu'Expression de cette ligne pour les champs calculés.