Fejlen siger det hele, du grupperer ikke efter MEMBERS.MEMBER_ID
og MEMBERS.MEMBER_NAME
.
VÆLG MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME , COUNT(personal_training_sessions.session_id) FRA MEDLEMMER JOIN personal_training_sessions ON personal_training_sessions.member_id =members.member_id GRUPPE AF MEMBERS.MEMBER_ID, MEMBERS_NAME.codeMEMBER_NAME.
Du vil have antallet af personlige sessioner pr. medlem, så du skal gruppere efter medlemsoplysningerne.
Den grundlæggende (selvfølgelig kan det blive meget mere kompleks) GROUP BY, SELECT-forespørgsel er:
VÆLG , , , FRA GRUPPER EFTER ,
En aggregeret funktion er, som Ken White siger, noget som MIN()
, MAX()
, COUNT()
osv. Du GRUPPER AF alle de kolonner, der ikke er aggregeret.
Dette vil kun fungere efter hensigten, hvis dine MEMBERS
tabellen er unik på MEMBER_ID
, men baseret på din forespørgsel formoder jeg, at det er det. For at præcisere, hvad jeg mener, hvis din tabel ikke er unik på MEMBER_ID
så tæller du ikke antallet af sessioner pr. MEMBER_ID
men antallet af sessioner pr. MEMBER_ID
og pr. MEMBER_NAME
. Hvis de er i et 1:1 forhold, er det faktisk det samme, men hvis du kan have flere MEMBER_NAME
s pr. MEMBER_ID
så er det ikke.