gpt4 book ai didi

mysql - 如何获得一组记录的总和?

转载 作者:行者123 更新时间:2023-11-29 07:04:41 25 4
gpt4 key购买 nike

我对 rails 和 sql 都比较陌生。我在生产环境中使用 postgres。

我有一个 Like 模型,通过多态性,它有属性 likeable_typelikeable_id,这就是我的 Photo 中的项目 模型被用户“喜欢”。当喜欢的对象将 Photo 作为 likeable_type 并且照片的 id 为likeable_id

我的问题:我希望能够获得过去 24 小时内点赞次数最多的照片列表,按顺序将最喜欢的放在顶部,最不喜欢的放在底部。我该怎么做?

到目前为止我知道我的代码应该是这样的

likes = Like.find(:all, :conditions => { :created_at => 1.days.ago.utc...Time.now.utc, :likeable_type => "Photo" })
likes = likes.group( --- something here --- , SUM( --- something here --- ))

但我不太清楚正确的语法应该是什么。

非常感谢任何帮助!

最佳答案

假设您有以下内容:

class Photo < AR::Base
has_many :likes, :as => :likeable
end


class Like < AR::Base
belongs_to :likeable, :polymorphic => true
end

尝试:

@photos = Photo.select("photos.*, count(likes.id) AS likes_count").joins(:likes).where('likes.created_at > ?', 1.day.ago).group('photos.id').order('likes_count DESC')

这还允许您访问每张照片的赞数:

@photo.first[:likes_count] # => 4

关于mysql - 如何获得一组记录的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8079286/

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