Kesalahan mengatakan semuanya, Anda tidak mengelompokkan menurut MEMBERS.MEMBER_ID dan 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
Anda ingin jumlah sesi pribadi per anggota, jadi Anda perlu mengelompokkan berdasarkan informasi anggota.
Dasar (tentu saja bisa menjadi lebih kompleks) GROUP BY, SELECT query adalah:
SELECT <column 1>, <column n>
, <aggregate function 1>, <aggregate function n>
FROM <table_name>
GROUP BY <column 1>, <column n>
Fungsi agregat, seperti yang dikatakan Ken White, seperti MIN() , MAX() , COUNT() dll. Anda GROUP BY semua kolom yang tidak diagregasi.
Ini hanya akan berfungsi sebagaimana dimaksud jika MEMBERS . Anda tabel unik pada MEMBER_ID , tetapi berdasarkan permintaan Anda, saya curiga demikian. Untuk memperjelas apa yang saya maksud, jika tabel Anda tidak unik di MEMBER_ID maka Anda tidak menghitung jumlah sesi per MEMBER_ID tetapi jumlah sesi per MEMBER_ID dan per MEMBER_NAME . Jika mereka berada dalam hubungan 1:1 maka itu secara efektif adalah hal yang sama tetapi jika Anda dapat memiliki beberapa MEMBER_NAME s per MEMBER_ID maka tidak.