Lỗi nói lên tất cả, bạn không nhóm theo MEMBERS.MEMBER_ID
và 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
Bạn muốn số lượng phiên cá nhân mỗi thành viên, vì vậy bạn cần phân nhóm theo thông tin thành viên.
Truy vấn cơ bản (tất nhiên nó có thể phức tạp hơn nhiều) GROUP BY, SELECT truy vấn là:
SELECT <column 1>, <column n>
, <aggregate function 1>, <aggregate function n>
FROM <table_name>
GROUP BY <column 1>, <column n>
Một hàm tổng hợp, như Ken White nói, giống như MIN()
, MAX()
, COUNT()
v.v .. Bạn NHÓM THEO tất cả các cột không được tổng hợp.
Điều này sẽ chỉ hoạt động như dự kiến nếu MEMBERS
của bạn bảng là duy nhất trên MEMBER_ID
, nhưng dựa trên truy vấn của bạn, tôi nghi ngờ là như vậy. Để làm rõ ý tôi, nếu bảng của bạn không phải là duy nhất trên MEMBER_ID
thì bạn không tính số phiên mỗi MEMBER_ID
nhưng số phiên mỗi MEMBER_ID
và mỗi MEMBER_NAME
. Nếu họ ở trong mối quan hệ 1:1 thì nó thực sự giống nhau nhưng nếu bạn có thể có nhiều MEMBER_NAME
s mỗi MEMBER_ID
thì không phải.