繁体   English   中英

将 SQL 语句转换为 Arel Rails 查询

[英]Convert SQL statement to Arel Rails query

所以,让我们直截了当地说:我正在努力转换这个 SQL 语句:

select * from (
    select distinct on (program_id) editions.*, programs.* 
    from editions inner join programs on editions.program_id = programs.id 
    where programs.station_id = 1) as editionsprograms 
order by fixed desc, published_at desc, time desc 
limit 4;

到 Arel rails 查询。 有人知道如何进行与上述 SQL 具有相同效果的 Arel 查询?

您可以使用from方法来完成查询的棘手部分(从子查询中选择)。 子查询本身应该是一个简单的映射( selectjoinswhere等)。 所以结果会是这样的:

Edition.select('*')
.from(
  Editions.select('DISTINCT ON (program_id) editions.*, programs.*')
          .joins(:programs)
          .where(programs: { station_id: 1 })
)
.order(fixed: :desc, published_at: :desc, time: :desc)
.limit(4)

这将返回版本记录,以及存储在每个版本记录中的程序记录中的附加数据。 为了避免该结果类型的怪异,它也可能只是抛出错误并且无法解决,您可以直接使用 Arel(类似语法)或在末尾使用.pluck.pluck您实际需要的列。

最近我发现了这个很酷的项目http://www.scuttle.io/
scuttle - sql 到 arel 转换器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM