2015-02-12 99 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