त्रुटि यह सब कहती है, आप MEMBERS.MEMBER_ID
द्वारा समूहीकृत नहीं कर रहे हैं और 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
आप व्यक्तिगत सत्रों की संख्या प्रति चाहते हैं सदस्य, इसलिए आपको सदस्य जानकारी के आधार पर समूह बनाना होगा।
मूल (बेशक यह बहुत अधिक जटिल हो सकता है) ग्रुप बाय, सेलेक्ट क्वेरी है:
SELECT <column 1>, <column n>
, <aggregate function 1>, <aggregate function n>
FROM <table_name>
GROUP BY <column 1>, <column n>
एक समग्र कार्य, जैसा कि केन व्हाइट कहते हैं, कुछ इस तरह है MIN()
, MAX()
, COUNT()
आदि. आप सभी . द्वारा समूहित करें कॉलम जो एकत्रित नहीं हैं।
यह केवल तभी काम करेगा जब आपके MEMBERS
MEMBER_ID
पर तालिका अद्वितीय है , लेकिन आपकी क्वेरी के आधार पर मुझे संदेह है कि यह है। मेरा मतलब स्पष्ट करने के लिए, यदि आपकी तालिका MEMBER_ID
. पर अद्वितीय नहीं है तो आप प्रति MEMBER_ID
. सत्रों की संख्या की गणना नहीं कर रहे हैं लेकिन सत्रों की संख्या प्रति MEMBER_ID
और प्रति MEMBER_NAME
. यदि वे 1:1 संबंध में हैं तो यह प्रभावी रूप से वही बात है लेकिन यदि आपके पास एकाधिक MEMBER_NAME
हो सकते हैं s प्रति MEMBER_ID
तो यह नहीं है।