次の MySQL テーブル (student_lesson_progress) があります。
- ID
- レッスンID
- 学生証
- LessonStatusTypeId
- 記録日時
- ...
現在の学年で、最後のステータスが 2 つの値 (6 または 13) のいずれかであった生徒の数を取得する必要があります。
私はSQLの初心者です。各 StudentId/lessonId の組み合わせの最後のレコードを取得することから始めたいと思います。次に、そのリストを自分の基準を満たすものに絞り込みます。これは私が欲しいと思うクエリですが、サブクエリの「Max」で構文エラーを引き起こします。
SELECT M1.*
FROM student_lesson_progress M1
{
SELECT MAX(id) as lastRecord, lessonId, studentId, lessonStatusTypeId
FROM student_lesson_progress
GROUP BY studentId, lessonId
} M2
WHERE recordDateTime > "2012-08-01"
AND (lessonStatusTypeId = 13 or lessonStatusTypeId = 6)
ORDER BY studentId, lessonId, lastRecord
計算された値を持つサブクエリの構文の例を見つけるのに苦労しています。提案?それとももっと良い方法がありますか?