Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何执行计数和属性的where查询?_Sql_Ruby On Rails_Postgresql_Activerecord - Fatal编程技术网

Sql 如何执行计数和属性的where查询?

Sql 如何执行计数和属性的where查询?,sql,ruby-on-rails,postgresql,activerecord,Sql,Ruby On Rails,Postgresql,Activerecord,我实际上是在尝试将此语句转换为SQL: Member.all.select{|e|e.quizzes.present? && e.quizzes.any?{|q|!q.completed} } 到目前为止,我有: Member.joins(:quizzes).group("enterprise_members.id HAVING count(quizzes.id) > 0") 但这并没有考虑到仅仅通过未设置完成的测验来确定我的查询范围 我该怎么做 这有用吗 Member

我实际上是在尝试将此语句转换为SQL:

Member.all.select{|e|e.quizzes.present? && e.quizzes.any?{|q|!q.completed} }
到目前为止,我有:

Member.joins(:quizzes).group("enterprise_members.id HAVING count(quizzes.id) > 0")
但这并没有考虑到仅仅通过未设置完成的测验来确定我的查询范围

我该怎么做

这有用吗

Member.joins(:quizzes).where('quizzes.completed = ?', false)
这将返回至少有一个未完成测验的成员。注意:这假定不允许Null作为completed的值。如果允许空值,那么您必须说

Member.joins(:quizzes).where('quizzes.completed is null or quizzes.completed = ?', false)

我不确定这是否正是你想要的。如果您用英语而不是/以及代码描述所需的结果,这会很有帮助。

我想您可以在第一个查询中调用
to_sql
,这样您就可以编写第二个查询了。@Pavan您不能在Ruby调用的末尾放入
。to_sql
。@Pavan您不了解Rails作用域的基本知识,以及使用
来创建sql
。触发SQL执行查询后,如执行
.select{}
,您不能调用
.to_SQL
,因为在执行
.select
之后,它不再是ActiveRecord::Relation(Rails作用域!),而是一个数组!啊哈,别担心@Pavan,不需要道歉!我很高兴我教了你一些新东西:)这是我在这方面的主要目标website@MrYoshiji我也很高兴知道一些我以前不知道的事情:)那个时候不需要集体电话吗?我不这么认为,但就像我说的,我不能100%确定你们的要求是什么。非常感谢Max。我不得不在末尾附加我的
.group
语句,以使其完美匹配。我真的很感谢你的回复!