Подсобите новичку. Ситуация очень похожая на ту, которая в этом вопросе. Только статусы у меня могут принимать 3 значения (1, 2 и 3).
Запрос выглядит так:
SELECT * FROM wp_lessons_uls_welcomecourse_access
WHERE wp_lessons_uls_welcomecourse_access.status IN (1,2,3)
group by userId, lessonNum
having max(status) IN (1,2) and min(status)=1
Задача: нужно выбрать id только тех строк, где у userId и lessonNum последний добавленный статус (status) = 1.
Проблемы:
если у userId, lessonNum последняя строка имеет статус 2, то id этих строк тоже попадают в выборку. И это то, над чем уже вторые сутки бьюсь. Знаю, что попадает, потому что это прописано тут: having max(status) IN (1,2)
Если написать having max(status) = 1, то из выборки выпадают id строк, у которых статус принимал значение 2;
Если написать having max(status) = 2, то отображаются только те id, где статус принимал значение 2;
Перелопатил уже всё, что нашел по подходящим темам на этом сайте. Скорее всего, конечно, ищу неправильно, потому что толком не могу сформулировать, что мне надо найти.
Mike, благодарю за комментарий. Прям выручило! Полдня разбирался с теорией про группировки, алиасы и т.п., но в итоге всё зараболо!
Для тех, кто столкнётся с аналогичной проблемой - вот статья (Группировка в MySQL), где подробно разжёвано, что да как делать в подобной ситуации.
Решение получилось длинным, поэтому коротко суть:
Уверен, что можно сделать стройнее и изящнее. Но главное, что всё работает именно так, как задумано! Ещё раз благодарю за помощь!
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости