![](/img/trans.png)
[英]Rails: Convert a complex SQL query to Arel or ActiveRecord
[英]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方法來完成查詢的棘手部分(從子查詢中選擇)。 子查詢本身應該是一個簡單的映射( select
、 joins
、 where
等)。 所以結果會是這樣的:
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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.