【问题标题】:Retrieving the last record of grouped records using rails 3 using scope使用范围使用rails 3检索分组记录的最后一条记录
【发布时间】:2012-02-16 15:34:03
【问题描述】:

我在 Rails 3 的一个语句中使用 group by 和 order by 时遇到问题

在我的控制器中:

def index
  @units = Unit.list_order.grouped
end

还有我的模特:

scope :list_order, order("units.interior_code, units.created_at ASC")
scope :grouped, group("units.unit_parent")

查询正在拉回分组的数据(唯一记录基于 unit_parent 显示)并按 internal_code 排序,但它没有按日期对分组记录进行排序,即可能有 4 个分组记录并且查询不尊重日期命令只从组中提取最后一条记录

我在 SO 上看到了 this 的帖子,这是一个类似的问题

任何帮助将不胜感激

【问题讨论】:

    标签: sql ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    如果units.created_at 被排序为字符串而不是日期,则该顺序看起来不正确。您确定 created_at 的值被视为日期吗?

    【讨论】:

    • created_at 是数据库中的日期/时间格式,我不知道在使用 order_by 时需要对其进行任何不同的处理。我让它工作(我认为,需要正确测试) Unit.find_by_sql('SELECT u1.* FROM units u1 LEFT JOIN units u2 ON (u1.unit_parent = u2.unit_parent AND u1.created_at
    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多