Sunday 15 June 2014

Rails query with select, group and having won't work -


  @ विअलाटर्स = User.includes (: उल्लंघन)। चयन ('users.id, violations.id') .group ('users.id, violations.id')। ("COUNT (उल्लंघन। यूज़र_आईडी) & gt; =?", 5) .order ("COUNT (उल्लंघन। यूज़र_आईडी)" ")   

प्रत्येक उपयोगकर्ता has_many उल्लंघन ऊपर दिए गए प्रश्न के साथ, मैं उन उपयोगकर्ताओं को आदेश देने में सक्षम हूं जो सबसे अधिक उल्लंघन करते हैं, लेकिन मैं केवल उन उपयोगकर्ताओं को देखना चाहता हूं जिनके पास 5 या अधिक उल्लंघन हैं जब मैं 5 सम्मिलित करता हूं, तो 5 से अधिक उल्लंघनों वाले उपयोगकर्ता होने के बावजूद कुछ भी नहीं दिखाई देता है जब मैं वहां 1 दर्ज करता हूँ, तो सभी उपयोगकर्ताओं को उल्लंघन दिखाई देता है!

अद्यतन करें:

मैं उन उपयोगकर्ताओं को ऑर्डर करने में सक्षम नहीं हूं जिनके सबसे अधिक उल्लंघन है जैसा मैंने पहले सुझाव दिया था। शायद उल्लंघन की वास्तविक गणना के साथ कोई समस्या है किसी भी तरह से उन्हें कैप्चर नहीं है यद्यपि मैं कंसोल की जांच करता हूं और फिर से चल रहा हूं - user.violation.count, यह मुझे सटीक गणना देता है।

< P> आपको अपने अनुरोध में शामिल को शामिल करने की आवश्यकता है:
  @violators = User.joins (: उल्लंघन) .includes (: violations) .group ('user_id' )। ('COUNT (*) & gt; =?', 5) .order ('COUNT (*) desc')   

मैंने इसे मेरे मॉडल पर परीक्षण किया है चैम्पियनशिप और मिलान (चैंपियनशिप है_मैं मैचों):

  चैम्पियनशिप। जेन (: मैच) .includes ( (मैचों)। ग्रुप ('चैंपियनशिप_आईडी')। ('गिनती (*) & gt; =?', 5) .डर ('गिनती (*) डीईएससी')। सभी   

एसक्यूएल अनुरोध:

  एसक्यूएल (0.5 एमएमएस) का चयन करें "चैंपियनशिप"। "आईडी" एएस टी0_आर 0, "चैंपियनशिप"। "बनाया_एट" एएस टी -0_आर 4, "चैंपियनशिप"। "अपडेटेडटाइट" एएस टी0_आर 5, "मिलान" एएस टी 1_आर 10, "मैचों"। "चैंपियनशिप_आईडी" एएस टी 1_आर 1, "मैचों"। "बनाया गया" एएस टी 1_आर 9, "मैचों"। "अपडेटेड" एएस टी 1_आर 10, "मैच"। "रिजल्ट" एएस टी 1_आर 11, matche "आईडी" ग्रुप द्वारा चैंपियनशिप_आईड हैगिंग गिन (*) & gt; = 5 क्रम से गिनती (* ) डीईएससी    

No comments:

Post a Comment