Я использую rails 3.2 и пытаюсь использовать ActiveRecord для запроса моей базы данных. У меня есть 2 модели ActiveRecord, администратора и порядок:Custom select on join table
class Admin < ActiveRecord::Base
attr_accessible :email, :name
has_many :orders
class Order < ActiveRecord::Base
attr_accessible :operation
belongs_to :admin
В моем случае, order.operation является строка, представляющая тип заказа. Я пытаюсь построить запрос, который дает мне три столбца:
admin.name, admin.orders.where(:operation => 'bonus').count, admin.orders.where(:operation => 'gift').count
Есть ли способ поместить его в один запрос?
Редакция: вот сырой SQL, чтобы получить то, что мне нужно:
SELECT t_a.admin_id_com, t_a.name, gb_f_f_gb_f_fi.bonus_count, gb_f_f_gb_f_fi.gifts_count
FROM (
SELECT f_fil.admin_id_gifts, f_fil.gifts_count, f_filt.admin_id_bonus, f_filt.bonus_count
FROM (
SELECT admin_id as admin_id_gifts, count(distinct id) as gifts_count FROM orders WHERE operation = 'new gifts!' GROUP BY admin_id_gifts)
f_fil LEFT OUTER JOIN (
SELECT admin_id as admin_id_bonus, count(distinct id) as bonus_count FROM orders WHERE operation = 'new bonuses!' GROUP BY admin_id_bonus)
f_filt ON (f_fil.admin_id_gifts = f_filt.admin_id_bonus))
gb_f_f_gb_f_fi LEFT OUTER JOIN (
SELECT id AS admin_id_com, t_ad.name FROM admins t_ad) t_a ON (gb_f_f_gb_f_fi.admin_id_gifts = t_a.admin_id_com)
Можно ли Buid запрос типа, что с помощью ActiveRecord?
Вы хотите агрегатные вычисления столбцов столбцов на основе (т.е. сгруппированных) столбца 'admin.name'? –
Yep, .group (: admin_id) было бы хорошо, но это не та часть, с которой у меня проблемы. –
Можете ли вы рассказать мне, с чем вы столкнулись (например, показать, что вы пробовали)? –