【发布时间】:2016-07-03 03:12:48
【问题描述】:
我有点坚持尝试为我的应用程序生成统计信息。应用程序的相关部分具有以下结构:
class CarRegistration < ActiveRecord::Base
belongs_to :ride
belongs_to :car
...
end
class Car < ActiveRecord::Base
has_many :car_registration
...
end
class Ride < ActiveRecord::Base
belongs_to :passenger
belongs_to :driver
has_many :car_registration
...
end
class Driver < ActiveRecord::Base
has_many :cars
...
end
class Passenger < ActiveRecord::Base
has_many :cars
...
end
我正在尝试获取游乐设施、顶级司机和顶级乘客的列表。我最初尝试过这样的事情:
@rides_finished = Ride.joins(:car_registration)
.select('rides.id')
.where("(car_registrations.ride_id = rides.id)
AND rides.status = 3
AND rides.driver_currency = ?
AND rides.passenger_currency = ?", currency, currency)
.distinct # against displaying one shipment multiple times
然后我尝试了:
@top_pasengers = @rides_finished.joins(:passenger)
.select('passengers.id, passengers.name, count(rides.passenger_id) AS count_all')
.where('rides.passenger_id IS NOT NULL')
.group('passengers.id')
.order('count_all DESC')
.limit(10)
但是当我运行这些查询时,我得到了
Mysql2::Error: Unknown column 'count_all' in 'order clause': ...
任何帮助如何获得所需的数字?
非常感谢
【问题讨论】:
-
是否有可能 CarRegistration →
has_many→ Ride?这是问题中的belongs_to,但反过来对我来说更有意义。
标签: mysql ruby-on-rails ruby join activerecord