L'errore dice tutto, non stai raggruppando per MEMBERS.MEMBER_ID
e 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
Vuoi il conteggio delle sessioni personali per membro, quindi è necessario raggruppare in base alle informazioni sul membro.
La query di base (ovviamente può diventare molto più complessa) GROUP BY, SELECT è:
SELECT <column 1>, <column n>
, <aggregate function 1>, <aggregate function n>
FROM <table_name>
GROUP BY <column 1>, <column n>
Una funzione aggregata è, come dice Ken White, qualcosa come MIN()
, MAX()
, COUNT()
ecc. GRUPPI PER tutti le colonne non aggregate.
Funzionerà come previsto solo se i tuoi MEMBERS
la tabella è univoca su MEMBER_ID
, ma in base alla tua domanda sospetto che lo sia. Per chiarire cosa intendo, se la tua tabella non è univoca su MEMBER_ID
allora non stai contando il numero di sessioni per MEMBER_ID
ma il numero di sessioni per MEMBER_ID
e per MEMBER_NAME
. Se hanno una relazione 1:1, è effettivamente la stessa cosa, ma se puoi avere più MEMBER_NAME
s per MEMBER_ID
allora non lo è.