SELECT SUM(orders.quantity) AS num, fName, surname
FROM author
INNER JOIN book ON author.aID = book.authorID;
Je continue à recevoir le message d'erreur suivant: "vous avez essayé d'exécuter une requête qui n'inclut pas l'expression spécifiée" fName "dans le cadre d'une fonction d'agrégation.
L'erreur est due au fait que fName
est inclus dans la liste SELECT
, mais n'est pas inclus dans une clause GROUP BY
et ne fait pas partie d'une fonction d'agrégation (Count()
, Min()
, Max()
, Sum()
, etc.).
Vous pouvez résoudre ce problème en incluant fName
dans un GROUP BY
. Mais alors vous ferez face au même problème avec surname
. Alors mettez les deux dans le GROUP BY
:
SELECT
fName,
surname,
Count(*) AS num_rows
FROM
author
INNER JOIN book
ON author.aID = book.authorID;
GROUP BY
fName,
surname
Notez que j'ai utilisé Count(*)
où vous vouliez SUM(orders.quantity)
. Cependant, orders
n'est pas inclus dans la section FROM
de votre requête. Vous devez donc l'inclure avant de pouvoir Sum()
l'un de ses champs.
Si Access est disponible, créez la requête dans le concepteur de requête. Cela peut vous aider à comprendre quelles fonctionnalités sont possibles et à appliquer la syntaxe correcte pour Access SQL.
J'ai eu un problème similaire dans une requête MS-Access, et je l'ai résolu en changeant mon équivalent fName
en "Expression" (par opposition à "Group By" ou "Sum"). Tant que tous mes champs étaient "Expression", le générateur de requête Access n'avait pas besoin de clause Group By
à la fin.
GROUP BY peut être sélectionné à partir de la ligne Total en mode création de requête dans MS Access.
Si la ligne Total n’est pas affichée en mode Création (comme dans mon cas). Vous pouvez accéder à la vue SQL et ajouter GROUP par fname, etc. La ligne Total s'affiche automatiquement en mode Création.
Vous devez sélectionner comme expression dans cette ligne pour les champs calculés.