आपको SELECT
. में आपके द्वारा चुने जा रहे सभी कॉलम जोड़ने होंगे c.USER_ID
. को छोड़कर क्लॉज GROUP BY
. के लिए खंड, इस तरह:
group by c.ID, c.otherfields, l.title,..
संपादित करें: मुझे लगता है कि निम्नलिखित ठीक से काम करेंगे:
SELECT count(c.USER_ID) as total_commments_user ,
c.*, u.NAME, l.TITLE as LINK_TITLE, u.AUTH_IMG
FROM `PLD_COMMENT` c
left outer join `PLD_USER` u ON (u.ID = c.USER_ID)
left outer join `PLD_LINK` l ON (l.ID = c.ITEM_ID)
group by c.ITEM_ID, c.USER_ID
ORDER BY c.USER_ID, l.ID
उदाहरण: यदि आपके पास निम्न नमूना डेटा है:
-
PLD_LINK:
ID STATUS TITLE 1 1 title1 2 2 title2
-
PLD_USER:
ID NAME 8 Mahmoud 9 Ahmed
-
PLD_COMMENT:
ID ITEM_ID USER_ID STATUS 4 1 8 1 5 1 8 1 6 1 8 1 7 2 8 2 8 2 8 2 9 1 9 1 10 1 9 1
केस 1:उपयोगकर्ता Mahmoud
दो बार प्रदर्शित होता है:
फिर, पिछली क्वेरी आपको प्रत्येक उपयोगकर्ता के लिए और प्रत्येक आइटम के लिए भी इस तरह टिप्पणियों की गिनती देगी:
total_commments_user ID ITEM_ID USER_ID Name
3 4 1 8 Mahmoud
2 7 2 8 Mahmoud
2 9 1 9 Ahmed
ध्यान दें कि उपयोगकर्ता Mahmoud
अलग-अलग गिनती के साथ दो बार प्रदर्शित होता है, क्योंकि उसके पास अलग-अलग Item_Id
है ।
केस 2:उपयोगकर्ता Mahmoud
केवल एक बार दिखाया जाता है:
यदि आप सभी आइटम के लिए प्रत्येक उपयोगकर्ता के लिए टिप्पणियों की संख्या प्राप्त करना चाहते हैं तो आपको केवल USER_ID
के आधार पर समूह बनाना होगा और आपको मिल जाएगा:
total_commments_user ID ITEM_ID USER_ID Name
5 4 1 8 Mahmoud
3 9 1 9 Ahmed
जैसा कि अब आप देख सकते हैं कि उपयोगकर्ता Mahmoud
केवल एक बार प्रदर्शित होता है, क्योंकि हमने Item_Id
. में प्रवेश किया है ।
फिर आप स्थिति या जो भी हो, के आधार पर फ़िल्टर कर सकते हैं।