De fout zegt het al, je groepeert niet op MEMBERS.MEMBER_ID en 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
SELECT <column 1>, <column n>
, <aggregate function 1>, <aggregate function n>
FROM <table_name>
GROUP BY <column 1>, <column n>
Een geaggregeerde functie is, zoals Ken White zegt, zoiets als MIN() , MAX() , COUNT() enz. U GROEPERT OP alles de kolommen die niet zijn geaggregeerd.
Dit werkt alleen zoals bedoeld als uw MEMBERS tabel is uniek op MEMBER_ID , maar op basis van uw vraag vermoed ik van wel. Om te verduidelijken wat ik bedoel, als uw tabel niet uniek is op MEMBER_ID dan tel je niet het aantal sessies per MEMBER_ID maar het aantal sessies per MEMBER_ID en per MEMBER_NAME . Als ze een 1:1-relatie hebben, is het in feite hetzelfde, maar als je meerdere MEMBER_NAME kunt hebben s per MEMBER_ID dan is het dat niet.