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

एसक्यूएल:एकाधिक तालिकाओं की गिनती का चयन

समस्या नल के साथ गणित है, और नल के साथ ऑर्डर करना (डिफ़ॉल्ट ऑर्डरिंग को ओवरराइड करने के लिए "न्यूल्स लास्ट" विकल्प में चेक करें जो अवरोही क्रम के लिए पहले नल लौटाता है)।

आपके मामले में, बाहरी जुड़ाव के साथ, यदि उपयोगकर्ता के पास लेख टिप्पणियों का एक टन है, लेकिन कोई मंच टिप्पणी नहीं है, ठीक है, Oracle गणित में 100 + null =null। तो गणित को काम करने के लिए आपको शून्य =0 बनाना होगा। यहीं पर NVL() आता है (और आपके परिणाम सेट से pesky nulls को खत्म करने का अच्छा दुष्प्रभाव भी है)!

SELECT u.id, u.username, (NVL(COUNT(a.id),0) + NVL(COUNT(f.id),0)) AS rank 
FROM site_users u 
  LEFT JOIN site_articles_comments a ON a.user_id = u.id 
  LEFT JOIN site_forum_comments f ON f.user_id = u.id 
GROUP BY u.username, u.id ORDER BY rank DESC LIMIT :l

मुझे लगता है कि आपके टैग में MySQL और Oracle दोनों हैं - उपरोक्त Oracle के लिए है। यदि MYSQL के लिए इसके बजाय COALESCE(COUNT(),0) का उपयोग करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresl चयन गिनती (*) समय लेने वाली

  2. mysql:'स्ट्रिंग' की तुलना 0 से क्यों करना सही है?

  3. Django में गैर-प्राथमिक विदेशी कुंजी

  4. कॉलम स्ट्रिंग को कई कॉलम स्ट्रिंग्स में विभाजित करें

  5. mysql_real_escape_string के साथ php filter_var का उपयोग करना