可以說我有幾桌生成一個子查詢與阿雷爾獲得平均的平均
orders = Arel::Table.new :orders
stores = Arel::Table.new :stores
managers = Arel::Table.new :managers
和經理有許多商店和商店有很多的訂單。
有一天,我想查詢經理工作的訂單平均總額。哦,我想在商店裏分組。所以要明確一點,我想要得到一個經理人的平均訂單總額,他們所在的每個商店都是這樣。
而且假設我們已經看到了我們的經理:
manager = Manager.find(some_id)
totals = orders.where(orders[:store_id].in(manager.store_ids)).group(orders.store_id).project(orders[:total].average)
puts totals.to_sql
"SELECT AVG(`orders`.`total`) AS avg_id FROM `orders` WHERE `orders`.`store_id` IN (1, 2, 3) GROUP BY `orders`.`store_id`"
是啊,這偉大工程。但是,我怎樣才能得到這些平均值的平均值?
Arel得到這個查詢是什麼?
"SELECT AVG(avg_id) FROM (SELECT AVG(`orders`.`total`) AS avg_id FROM `orders` WHERE `orders`.`store_id` IN (1, 2, 3) GROUP BY `orders`.`store_id`) as avg_id_alias;"
有人知道嗎?
原則上這不是ORM的失敗。這是某些ORM實現的失敗。 – 2013-07-25 18:59:14