gpt4 book ai didi

sql - Rails 使用相关表中的数据进行查找和排序

转载 作者:数据小太阳 更新时间:2023-10-29 07:49:04 26 4
gpt4 key购买 nike

我关联了两个模型 BusinessRatings。一个企业可以被多次评级,每个评级存储一个从 0 到 5 的整数。

我想创建一个“名人堂”页面,通过根据平均评级(将使用 Ratings 模型)对企业进行排序并限制结果,我在其中列出了前 10 家企业到 10。

我不确定如何为 Controller 编写 hall_of_fame 方法,或者我是否还需要一个帮助程序?

最佳答案

假设两个模型之间有 has_many 和 belongs_to 关系,您可以尝试使用(非常方便的)MySQL GROUP BY 子句,Rails 支持它:

@hall_of_fame = Business.find(
:all,
:joins => :ratings,
:group => 'business_id',
:order => 'AVG(ratings.rating) DESC',
:limit => 10
)

如果要添加平均评分,可以将其包含在 :select 参数中,例如:

@hall_of_fame = Business.find(
:all,
:select => 'businesses.name, AVG(ratings.rating)'
:joins => :ratings,
:group => 'business_id',
:order => 'AVG(ratings.rating) DESC',
:limit => 10
)

当然,如果表之间没有冲突的列名,您可以安全地删除领先的“业务”。和“收视率”。来自 :select 和 :order 参数。

您可能希望在您的模型中使用此代码创建一个方法,而不是在 Controller 中使用它,但这取决于您。

关于sql - Rails 使用相关表中的数据进行查找和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1943449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com