Я работал над формулировкой запроса для таблицы приемлемости с пользователем, который может иметь различные права.
Таблица будет иметь указанный ниже формат.
id | start_date | end_date | status | user_id
---------------------------------------------
Для этого мне нужнополучить всех пользователей с активным правом.Запрос на то же самое добавлен ниже.
select *
from users u
inner join eligibility e on users.id=eligibility.user_id
where e.start_date <= '2019-03-22'
and e.end_date >= '2019-03-22'
and e.status<> 'inactive'
Это работает нормально, и я получаю eligibile пользователей, когда есть хотя бы одна действительная запись приемлемости с критериями, указанными в запросе.
Теперь Я должен проверить всех неподходящих пользователей , используя эти записи.
В основном нам придется выбирать пользователей без действительных записей о праве на участие.Если у пользователя есть хотя бы одна запись о праве на участие, он считается правомочным.
Ниже приведены примерные данные и ожидаемые результаты.
Таблица пользователей: -
id | first_name | last_name
---------------------------
1 | John | Doe
2 | Sam | Ronald
3 | Alice | Wayne
4 | Dean | Marcus
5 | Bony | Ignatius
6 | Kim | Pharm
7 | Tony | Ryan
Правотаблица: -
id | start_date | end_date | status | user_id
-------------------------------------------------
1 2018-06-23 2018-12-31 | active | 1
2 2018-06-23 2019-01-30 | active | 1
3 2018-06-23 2018-12-31 | active | 3
4 2018-06-23 2019-12-22 | active | 3
5 2018-06-23 2018-12-31 |inactive| 4
6 2018-06-23 2019-03-10 | active | 4
7 2018-06-23 2018-12-31 | active | 5
8 2018-06-23 2019-12-31 | active | 5
9 2018-06-23 2018-01-31 | active | 6
10 2018-06-23 2019-12-24 | active | 6
11 2018-06-23 2018-12-31 |inactive| 7
12 2018-06-23 2019-02-22 | active | 7
13 2018-06-23 2019-12-31 | active | 1
14 2018-06-23 2019-12-31 | active | 3
С этими данными и текущей датой имеют право пользователи с Id: 1,3,5 и 6.А пользователи с идентификатором 2 (не имеют записи о праве на участие), 4 и 7 не имеют права, если вы посмотрите на данные.
Примечание: статус «активный» не означает, что он активен.Мы также должны проверить диапазон дат.
Теперь я хочу знать, как я могу запрашивать неподходящих пользователей.