Это две таблицы, которые у меня под рукой,
Вызовы
id | Имя
Challenges_Users
user_id | challenge_id | start_at | completed_at
каждый экземпляр в таблице challenge_users - это запись о том, что пользователь принял вызов, и его состояние (состояние основано на отметках времени start_at и complete_at)
Кроме того, пользователь может принять вызов несколько раз (не одновременно, но может принять его снова после завершения первого экземпляра). Таким образом, таблица может выглядеть так для одной задачи.
id | challenge_id | start_at | completed_at
2831 | 4 | 2010-12-23 00:00:00 | 2010-12-29 15: 42: 41
2834 | 4 | 2010-12-29 15:46:53 | NULL
Теперь мне нужно получить список всех испытаний из таблицы задач и их состояние последнего экземпляра из таблицы challenge_users.
Состояния:
если в таблице challenge_users нет экземпляра для вызова => unstarted
если завершено-ноль равно нулю, а началось-ноль не равно нулю => выполняется
если complete_at не равен NULL и start_at не равен NULL => завершено
У меня 2 проблемы:
Как сделать простое объединение, чтобы все вызовы, для которых нет конкретного экземпляра user_id в challeges_users, также включались в набор результатов.
Как вернуть результирующий набор так, чтобы в нем была только запись с последним начальным_татом.
Любая помощь очень ценится. Спасибо!