Как формировать запросы на получение пользователей с фильтрацией.
Таблицы: users, education_session, test_history
структура:users
education_session
test_history
вывод пользователей (примерный):
Простая выборка пользователей, без фильтров:
select distinct `users`.*, `subdivisions`.`title` as `subdivision_title`, `positions`.`title` as `position_title`
from `users`
left join `subdivisions` on `users`.`subdivision` = `subdivisions`.`id`
left join `positions` on `users`.`position` = `positions`.`id`
where `users`.`role_id` = 0
order by `users`.`full_name` asc limit 25 offset 0
И начинаются сложности с фильтрацией, так как у каждого пользователя может быть несколько сессий к основным программам общая сессия, к дополнительным, к каждой теме своя сессия, в истории тестирования данные хранятся включая истории с прошлых сессий, при выполнении теста сохраняются данные с ID пользователя, сессии, темы и самого теста. При выборке достаются данные с последних сессий.
Как сформировать порядок запросов для вывода пользователей? Смотреть сначала данные по сессиям к выбранным темам, с учетом что к разным программам могут быть разные сессии. Потом смотреть в истории тестировании, есть ли к выбранным темам по последним сессиям данные, а потом делать запрос к пользователям, по данным из истории тестирования.