मैं खातों से अधिक उपयोगकर्ता है कि संग्रह प्राप्त कर सकते हैं कि की गिनती हो रही है:रेल 3 रिकॉर्ड एक से अधिक सहयोगी रिकॉर्ड (has_many)
Account.group('accounts.id HAVING count(users.id) > 1').joins(:users)
लेकिन, जैसे ही मुझे कहते हैं। उस ऑब्जेक्ट पर गिनती करें, मुझे एक बड़ा विस्फोट मिलता है:
(0.3ms) SELECT COUNT (*) AS count_all, accounts.id हैविंग गिनती (users.id)> 1 खातों के रूप में "खातों" INNER जॉइन में शामिल हों "उपयोगकर्ता" "उपयोगकर्ता" पर। "Account_id" = "accounts"। "Id" ग्रुप द्वारा ग्रुप। आईडी हैगिंग गिनती (users.id)> 1 ActiveRecord :: स्टेटमेंट इनवालिड: पीजी :: त्रुटि: त्रुटि: वाक्यविन्यास त्रुटि या पास "के रूप में" पंक्ति 1: ... unt_all, गिनती होने (users.id)> 1 खातों के रूप में ... accounts.id
ऐसा लगता है postgres में, वास्तविक क्वेरी मैं चाहता है कि:
select count(*) from (SELECT accounts.id FROM "accounts" INNER JOIN "users" ON "users"."account_id" = "accounts"."id" GROUP BY accounts.id HAVING count(users.id) > 1) as a;
मैं इसे (या तुलनीय) क्वेरी उत्पन्न करने के लिए सक्रियक्रॉर्ड कैसे प्राप्त कर सकता हूं?
लेकिन यह है कि संग्रह से अधिक गहरे लाल रंग का बार-बार दोहराना और प्रत्येक value-- पर एक तुलना कर रहे हैं और उस पर तो बुला गिनती की आवश्यकता है। मैं डेटाबेस को गिनती करने का एक तरीका ढूंढ रहा हूं। – patrick