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í.