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

यह कैसे संभव है कि SQL क्वेरी और ActiveRecord.find_by_sql अलग-अलग परिणाम लौटाएं?

दोनों उदाहरणों में आपके पास सही परिणाम है।

यदि आप केवल count का उपयोग करते हैं चयन में आपको हमेशा क्वेरी के परिणामस्वरूप एक नंबर मिलता है। तो डेटाबेस से आपका परिणाम अपेक्षित है।

रेल मामले में आप scope . द्वारा रिकॉर्ड के कुछ सेट प्राप्त करने का प्रयास कर रहे हैं count . के साथ चुनिंदा बयान में। यदि आपके पास count है तो खाली सेट होने की उम्मीद है आपकी क्वेरी में।

count_by_sql आज़माएं विधि http://apidock.com/rails/ActiveRecord/Base/count_by_sql/class रिक्त सेट के बजाय रिकॉर्ड की संख्या प्राप्त करने के लिए।

और बिना स्कोप के इसका इस्तेमाल करें, लेकिन क्लास मेथड के साथ:

def self.unverified_with_no_associations()
  self.count_by_sql("SELECT COUNT(DISTINCT(accounts.id, accounts.email)) FROM accounts WHERE level = 0 AND id NOT IN
            (SELECT DISTINCT(account_id) FROM verifications) AND id NOT IN 
            (SELECT DISTINCT(account_id) FROM positions) AND id NOT IN
            (SELECT DISTINCT(account_id) FROM edits) AND id NOT IN
            (SELECT DISTINCT(account_id) FROM posts) AND id NOT IN
            (SELECT DISTINCT(account_id) FROM reviews) AND id NOT IN
            (SELECT DISTINCT(sender_id) FROM kudos) AND id NOT IN
            (SELECT DISTINCT(account_id) FROM stacks WHERE account_id IS NOT NULL)")
end



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेज:JSON कॉलम को पंक्तियों में विस्तृत करें

  2. नई पंक्ति डालने पर कॉलम में डिफ़ॉल्ट मान

  3. पीजी मणि sslmode =सत्यापन-पूर्ण, प्रमाणपत्र कहां रखें?

  4. नोड सर्वर पोस्टग्रेज डीबी से कनेक्ट नहीं हो सकता है

  5. रेल में अनंत समय सीमा के साथ समस्याएं