SELECT SUM(orders.quantity) AS num, fName, surname
FROM author
INNER JOIN book ON author.aID = book.authorID;
「集計関数の一部として指定された式「fName」を含まないクエリを実行しようとしました。どうすればよいですか?
エラーは、fName
がSELECT
リストに含まれていますが、GROUP BY
句には含まれておらず、集約関数の一部ではないためです(Count()
、 Min()
、Max()
、Sum()
など)
fName
をGROUP BY
に含めることで、この問題を修正できます。ただし、surname
でも同じ問題に直面します。両方をGROUP BY
に入れてください:
SELECT
fName,
surname,
Count(*) AS num_rows
FROM
author
INNER JOIN book
ON author.aID = book.authorID;
GROUP BY
fName,
surname
注Count(*)
が必要な場所でSUM(orders.quantity)
を使用しました。ただし、orders
はクエリのFROM
セクションに含まれていないため、フィールドの1つをSum()
する前に含める必要があります。
Accessを使用できる場合は、クエリデザイナーでクエリを作成します。可能な機能を理解し、正しいAccess SQL構文を適用するのに役立ちます。
MS-Accessクエリで同様の問題が発生しましたが、同等のfName
を(「Group By」や「Sum」ではなく)「Expression」に変更することで解決しました。すべてのフィールドが「式」である限り、AccessクエリビルダーはGroup By
句の最後。
GROUP BYは、MS Accessのクエリデザインビューの[合計]行から選択できます。
合計行がデザインビューに表示されない場合(私の場合)。 SQLビューに移動し、fnameなどでGROUPを追加できます。合計行はデザインビューに自動的に表示されます。
計算フィールドの場合、この行の式として選択する必要があります。