Sql 基于按计数分组的活动记录对象
您好,我是ROR开发人员,使用rails 3.2.13和Postgres数据库 我有两种型号:Sql 基于按计数分组的活动记录对象,sql,ruby-on-rails,ruby,ruby-on-rails-3,postgresql,Sql,Ruby On Rails,Ruby,Ruby On Rails 3,Postgresql,您好,我是ROR开发人员,使用rails 3.2.13和Postgres数据库 我有两种型号: Question attr_accessible :category, :is_active, :question_text, :question_type_id, :survey_id, :user_id has_many :abusive_questions 及 从这里我想得到一个问题,哪个计数大于一个特定的值(例如:5) 我使用rails命令执行了以
Question
attr_accessible :category, :is_active, :question_text, :question_type_id, :survey_id,
:user_id
has_many :abusive_questions
及
从这里我想得到一个问题,哪个计数大于一个特定的值(例如:5)
我使用rails命令执行了以下操作
AbusiveQuestion.count(:group=>"abusive_questions.question_id")
得到
=> {1=>1, 5=>3, 3=>1}
对于这个结果,关键是question\u id
,值是计数,但我想得到哪个值大于某个特定动态值的问题(例如:2)
请帮帮我。你可以使用having方法。
你可以使用having方法。
我想你会想
加入问题
在滥用问题
上,然后使用选择
和拥有
来获得你想要的
比如:
AbusiveQuestion.select('abusive_questions.*, count(question.id) as question_count').
joins(:questions).
group('abusive_questions.question_id').
having('count(abusive_questions.question_id) > 5')
我想你会想加入问题
在滥用问题
上,然后使用选择
和拥有
来获得你想要的
比如:
AbusiveQuestion.select('abusive_questions.*, count(question.id) as question_count').
joins(:questions).
group('abusive_questions.question_id').
having('count(abusive_questions.question_id) > 5')
对于having
子句,您的想法是正确的,但您不需要count
部分。OP需要返回实际的AbusiveQuestion
对象,而不仅仅是返回的结果计数。而且,count\u all
也没有意义having
需要执行聚合函数以限制组。您对having
子句的想法是正确的,但不需要.count
部分。OP需要返回实际的AbusiveQuestion
对象,而不仅仅是返回的结果计数。而且,count\u all
也没有意义<代码>拥有
需要执行聚合函数以限制组。感谢您捕获该参数@teeg!感谢您的回复和@CDub。我在你的查询中遇到了一些问题,所以我利用了你的想法得到了我的结果。如下是AbusiveQuestions.join(“join questions on questions.id=Abusiver questions.id”)。选择(“Abusiver questions.id,count(distinct(question)id))作为问题计数。)。分组(“Abusiver questions.id”)。拥有(“count(Abusiver questions.id)>?”,极限)谢谢你抓住了那个帕伦,@teeg!感谢您的回复和@CDub。我在你的查询中遇到了一些问题,所以我利用了你的想法得到了我的结果。如下是AbusiveQuestions.join(“join questions on questions.id=Abusiver questions.id”)。选择(“Abusiver questions.id,count(distinct(question)id))作为问题计数。)。分组(“Abusiver questions.id”)。拥有(“count(Abusiver questions.id)>?”,限额)
AbusiveQuestion.select('abusive_questions.*, count(question.id) as question_count').
joins(:questions).
group('abusive_questions.question_id').
having('count(abusive_questions.question_id) > 5')