簡體   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