Для начала у меня есть 4 таблицы, с которыми я имею дело.
У меня есть таблица классов , которая является отношением 1-> N с таблицей секции , которая также имеет отношение 1-> N с уроками таблица.
Таким образом, чтобы выразить это следующим образом:
Последняя таблица - это activityLog , когда студент получает доступ к уроку, это записывается с использованием следующего:
ActivityLog Row -> actorID (идентификатор пользователя), classID, sectionID, lessonID
Я хочу извлечь последние 5 уникальных уроков, которые посетил студент. Я попытался использовать DISTINCT и GROUP BY без успеха.
Каждый раз возвращаются одни и те же записи, а не последние посещенные классы.
Использование GROUP BY
SELECT activityLog.actorID, activityLog.activityDate,
strClasses.classID, strClasses.className,
strSections.sectionID, strSections.sectionName,
strLessons.lessonID, strLessons.lessonName
FROM activityLog
LEFT JOIN strClasses ON strClasses.classID = activityLog.classID
LEFT JOIN strSections ON strSections.sectionID = activityLog.sectionID
LEFT JOIN strLessons ON strLessons.lessonID = activityLog.lessonID
WHERE activityLog.activityTypeID = 6 AND activityLog.actorID = 3
GROUP BY activityLog.lessonID
ORDER BY activityLog.activityDate DESC
LIMIT 5
Использование DISTINCT
SELECT DISTINCT activityLog.actorID,
strClasses.classID, strClasses.className,
strSections.sectionID, strSections.sectionName,
strLessons.lessonID, strLessons.lessonName
FROM activityLog
LEFT JOIN strClasses ON strClasses.classID = activityLog.classID
LEFT JOIN strSections ON strSections.sectionID = activityLog.sectionID
LEFT JOIN strLessons ON strLessons.lessonID = activityLog.lessonID
WHERE activityLog.activityTypeID = 6 AND activityLog.actorID = 3
ORDER BY activityLog.activityDate DESC
LIMIT 5
Я не могу понять, почему не отображаются последние записи.