Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysql गिनती ठीक से काम नहीं कर रही है?

आपको 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 . में प्रवेश किया है

फिर आप स्थिति या जो भी हो, के आधार पर फ़िल्टर कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GROUP BY से MAX प्राप्त करें

  2. दस्तावेज़ अपलोड करने की सीमा

  3. पायथन और MySQLdb - ड्रॉप टेबल का उपयोग करना यदि EXISTS अपवाद फेंकता प्रतीत होता है

  4. MySQL में .csv अपलोड की प्रगति कैसे देखें

  5. ज़ेंड फ्रेमवर्क में कैलेंडर