Chyba mluví za vše, neseskupujete podle MEMBERS.MEMBER_ID a 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
Chcete počet osobních relací za člen, takže musíte seskupit podle informací o členech.
Základní (samozřejmě může být mnohem složitější) dotaz GROUP BY, SELECT je:
SELECT <column 1>, <column n>
, <aggregate function 1>, <aggregate function n>
FROM <table_name>
GROUP BY <column 1>, <column n>
Agregační funkce je, jak říká Ken White, něco jako MIN() , MAX() , COUNT() atd. Seskupujete podle všech sloupce, které nejsou agregovány.
To bude fungovat, jak bylo zamýšleno, pouze pokud máte MEMBERS tabulka je jedinečná pro MEMBER_ID , ale na základě vašeho dotazu se domnívám, že ano. Abych objasnil, co tím myslím, pokud vaše tabulka není jedinečná pro MEMBER_ID pak nepočítáte počet relací na MEMBER_ID ale počet relací na MEMBER_ID a za MEMBER_NAME . Pokud jsou ve vztahu 1:1, je to vlastně totéž, ale pokud můžete mít více členů MEMBER_NAME s za MEMBER_ID pak to není.