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
在Rails 4中将SQL查询转换为活动记录查询_Sql_Ruby On Rails_Activerecord_Ruby On Rails 4 - Fatal编程技术网

在Rails 4中将SQL查询转换为活动记录查询

在Rails 4中将SQL查询转换为活动记录查询,sql,ruby-on-rails,activerecord,ruby-on-rails-4,Sql,Ruby On Rails,Activerecord,Ruby On Rails 4,我想知道上面的SQL查询是否可以转换为活动记录查询。目前,我正在使用find\u by\u sql,如下所示: SELECT * FROM ( SELECT DISTINCT ON (sec) id, sec FROM tasks ORDER BY sec, id DESC ) sub ORDER BY id DESC LIMIT 4; 或者只需使用group by(不需要区分) 此AR查询将分为两个sql查询:主查询和子查询。子查询将在:

我想知道上面的SQL查询是否可以转换为活动记录查询。目前,我正在使用
find\u by\u sql
,如下所示:

SELECT *
FROM (
   SELECT DISTINCT ON (sec)
          id, sec
   FROM   tasks
   ORDER  BY sec, id DESC
   ) sub
ORDER  BY id DESC
LIMIT  4;
或者只需使用group by(不需要区分)


此AR查询将分为两个sql查询:主查询和子查询。子查询将在:sec属性值上检索不同的记录,主查询将按降序ID对它们进行排序,并将记录限制为4

能否提供有关表架构的更多信息?恕我直言,我不认为你需要更多的信息-不是因为我不想分享-只是因为我真的不认为你需要更多的信息。有一个名为
tasks
(model
Task
)的表,有两个
integer
列(
id
sec
)。您可以在中看到表的创建和查询-其中还有一个附加函数,您可以忽略它。我主要是想了解sec列的类型,感谢您让我知道它是一个integerwiw,我更喜欢find_by_sqlversion@JohnNaegle我自己也更喜欢connection.execute和find_by_sql。
Task.find_by_sql("SELECT * FROM ( SELECT DISTINCT ON (sec) id, sec FROM tasks ORDER BY sec, id DESC ) sub ORDER BY id DESC LIMIT 4")
Task.select('t.*').from(Task.distinct(:sec).select(:id, :sec).group(:sec).order('sec, id desc'), :t).order('id desc').limit(4)
Task.select('t.*').from(Task.select(:id, :sec).group(:sec).order('sec, id desc'), :t).order('id desc').limit(4)