エラーはすべてを示しています。MEMBERS.MEMBER_IDでグループ化していない およびMEMBERS.MEMBER_NAME 。
SELECT MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME
, COUNT(personal_training_sessions.session_id)
FROM MEMBERS
JOIN personal_training_sessions
ON personal_training_sessions.member_id = members.member_id
GROUP BY MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME
あたりの個人セッションの数が必要です メンバーなので、メンバー情報でグループ化する必要があります。
基本的な(もちろん、はるかに複雑になる可能性があります)GROUP BY、SELECTクエリは次のとおりです。
SELECT <column 1>, <column n>
, <aggregate function 1>, <aggregate function n>
FROM <table_name>
GROUP BY <column 1>, <column n>
Ken Whiteが言うように、集約関数はMIN()のようなものです。 、MAX() 、COUNT() など。すべてでグループ化する 集計されていない列。
これは、MEMBERSが意図したとおりに機能する場合にのみ機能します テーブルはMEMBER_IDで一意です 、しかしあなたの質問に基づいて私はそれがそうであると思う。意味を明確にするために、テーブルがMEMBER_IDで一意でない場合 その場合、MEMBER_IDごとのセッション数はカウントされません。 ただし、MEMBER_IDあたりのセッション数 および MEMBER_NAMEごと 。それらが1:1の関係にある場合、それは事実上同じことですが、複数のMEMBER_NAMEを持つことができる場合 s per MEMBER_ID そうではありません。