2015-02-12 106 views
0

我有問題將此SQL語句翻譯爲activerecord/ruby​​友好代碼。請注意,end_at日期實際上是DateTime.now。將選擇不同的sql語句翻譯爲主動記錄

SELECT DISTINCT events.id FROM events, channels 
WHERE events.channel_id = channels.id AND events.end_at >= '2015-02-11 22:55:04' 
ORDER BY start_at ASC, id ASC LIMIT 40 

建議?

編輯:這個問題的最初起源來自這樣的事實,即mysql不支持我正在處理的應用程序的子查詢中的嵌套限制。所以分頁+這個查詢是導致錯誤:

# channels is an activerecord relation, order_by_schedule is a scope 
Event.where(:channel_id => channels).where{ end_at >= DateTime.now }.order_by_schedule.limit(channels.count * event_limit) 
+0

不使用它? – 2015-02-12 00:44:56

回答

0

我覺得你不需要加入channels,因爲你根本就不使用它們:爲什麼你,如果你不加入渠道

Event.select('DISTINCT id') 
     where('end_at >= NOW()'). 
     order('started_at, id'). 
     limit(40) 
+0

我上面做了一個快速編輯...我認爲我的sql語句實際上是不正確的,但是我已經說明了最初的問題。 – Msencenb 2015-02-12 00:52:46