【问题标题】:Active record query to get parents with first child that falls within a date range活动记录查询以获取日期范围内的第一个孩子的父母
【发布时间】:2019-10-08 14:41:27
【问题描述】:

我需要一个活动记录查询来计算某个日期范围内有第一个孩子的父母的数量。

例如

<%= Parent.joins(:children).where("children.created_at BETWEEN ? AND ?", 2019-01-01, 2020-01-01).uniq.count %>

将返回在日期范围内创建的任何孩子的父母的计数。

但是,如果他们的第一个孩子是在日期范围内创建的,我只想获取父母。

如何获取在两个日期之间创建的具有 FIRST Child 的父母的数量?

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    您可以通过 2 个查询来做到这一点,

    首先获取仅第一个子记录的所有子 ID(假设 children.id 是增量无符号整数,否则必须使用 created_at DESC 应用 ORDER BY),

    first_child_ids = Parent.joins(:children).group('parents.id').select('MIN(children.id)')
    

    然后得到计数,

    count = Parent.joins(:children).where('children.created_at BETWEEN ? AND ?', start, end).where(children: {id: first_child_ids}).count
    

    让我知道这是否有效。

    【讨论】:

    猜你喜欢
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    相关资源
    最近更新 更多