Активная запись запроса, чтобы получить родителей с первым ребенком, который попадает в диапазон дат - PullRequest
0 голосов
/ 08 октября 2019

Мне нужен запрос на активную запись, который подсчитывает количество родителей с их первым ребенком в диапазоне дат.

Например,

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

Возвращает количество родителей с ЛЮБОЙдетей, созданных в пределах диапазона дат.

Однако я хочу получить родителей только в том случае, если их первый ребенок был создан в пределах диапазона дат.

Как получить количество родителей с первым ребенкомсоздано между двумя датами?

1 Ответ

1 голос
/ 08 октября 2019

Вы можете сделать это с 2 запросами,

Сначала получите все дочерние идентификаторы для записей только для первого ребенка (при условии, что children.id является инкрементным целым числом без знака, в противном случае придется применить ORDER BY с созданным DESC);

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

Тогда получите счет,

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

Дайте мне знать, если это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...