【发布时间】:2011-05-31 08:54:56
【问题描述】:
我正在尝试在 ARel 中构建此查询:
SELECT FLOOR(AVG(num)) FROM (
SELECT COUNT(attendees.id) AS num, meetings.club_id FROM `meetings` INNER JOIN `attendees` ON `attendees`.`meeting_id` = `meetings`.`id` WHERE (`meetings`.club_id = 1) GROUP BY meetings.id) tmp
GROUP BY tmp.club_id
它返回每个俱乐部每次会议的平均出席人数。 (一个俱乐部有很多会议,一个会议有很多参加者)
到目前为止,我已经(在 Club
num_attendees = meetings.select("COUNT(attendees.id) AS num").joins(:attendees).group('meetings.id')
Arel::Table.new('tmp', self.class.arel_engine).from(num_attendees).project('FLOOR(AVG(num))').group('tmp.club_id').to_sql
但是,我得到了错误:
undefined method `visit_ActiveRecord_Relation' for #<Arel::Visitors::MySQL:0x9b42180>
生成非平凡 ARel 查询的文档有点难找。我一直在使用http://rdoc.info/github/rails/arel/master/frames 我是不是用错了方法?还是我离解决方案还有一些方法?
【问题讨论】:
标签: sql ruby-on-rails subquery arel