У меня есть таблица с именем admin_descriptions
, в которой есть следующие столбцы:
description_id
, value
, admin_id
, valid_at
И таблица admins
который имеет следующие столбцы:
state
Я хочу запрос, который получил description_id
, он дает мне количество активных администраторов, которые используют это описание.Описание для администратора считается используемым , пока в таблице admin_descriptions
есть строка, содержащая description_id
, NOT NULL value
и valid_at
, более поздняя, чем любая другая запись.у которого есть NULL value
для этого description_id
.
Итак, пример данных:
Row 1:
description_id: 1
value: 'foo'
admin_id: 2
valid_at: '2010-01-10'
Row 2:
description_id: 1
value: NULL
admin_id: 2
valid_at: '2012-01-10'
Row 2:
description_id: 1
value: 'some value'
admin_id: 4
valid_at: '2014-01-10'
Количество при запросе description_id = 1
будет равно 1. Это будет просто считать строку 3Поскольку даже если есть первая строка, в которой значение NOT NULL, есть строка 2, для которой valid_at является более поздним для того же admin_id, а value
равно NULL.
Мне удалось получить количествобез учета valid_at
через:
SELECT COUNT(DISTINCT(ad.id)) AS COUNT
FROM admin_descriptions ad
JOIN admins ON admins.id = ad.admin_id
WHERE ad.description_id = 1
AND admins.state = 'active'
Как я могу изменить этот запрос, чтобы учесть valid_at
для каждой комбинации admin_id / description_id?