【发布时间】:2011-07-15 14:01:55
【问题描述】:
首先,我要处理 4 个表。
我有一个 classes 表,它与 sections 表具有 1->N 关系,而 sections 表也与 lessonsN 关系/strong> 表格。
所以从长远来看:
-
课程
-
部分
- 课程
-
部分
最后一个表是activityLog,当学生访问课程时,会使用以下内容进行记录:
ActivityLog Row -> actorID(用户 ID)、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
我不知道为什么没有显示最新记录。
【问题讨论】:
-
你有示例输入和输出数据吗?
标签: mysql sql group-by left-join distinct