Der Fehler sagt alles, Sie gruppieren nicht nach MEMBERS.MEMBER_ID und 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
Sie möchten die Anzahl der persönlichen Sitzungen pro Mitglied, also müssen Sie nach den Mitgliedsinformationen gruppieren.
Die grundlegende (natürlich kann sie viel komplexer werden) GROUP BY, SELECT-Abfrage lautet:
SELECT <column 1>, <column n>
, <aggregate function 1>, <aggregate function n>
FROM <table_name>
GROUP BY <column 1>, <column n>
Eine Aggregatfunktion, die, wie Ken White sagt, so etwas wie MIN() ist , MAX() , COUNT() usw. Sie GRUPPIEREN NACH alle die nicht aggregierten Spalten.
Dies funktioniert nur wie beabsichtigt, wenn Ihre MEMBERS Tabelle ist eindeutig auf MEMBER_ID , aber basierend auf Ihrer Anfrage vermute ich, dass es so ist. Um zu verdeutlichen, was ich meine, wenn Ihre Tabelle auf MEMBER_ID nicht eindeutig ist dann zählen Sie nicht die Anzahl der Sitzungen pro MEMBER_ID sondern die Anzahl der Sitzungen pro MEMBER_ID und pro MEMBER_NAME . Wenn sie in einer 1:1-Beziehung stehen, ist es praktisch dasselbe, aber wenn Sie mehrere MEMBER_NAME haben können s pro MEMBER_ID dann ist es nicht.