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.