我有两张桌子,一门课程和一张考勤表。 课程表保存所提供课程的记录 出勤表记录了参加课程的学生姓名和电子邮件的记录以及他们参加的日期。
我需要选择所有出席记录,其中学生已经参加了3门课程中的2门,并输出完成3门课程所需的第3次无人值守课程。
课程表结构:
id : int
course_title : varchar
course_level : int
考勤表结构:
id : int
course_id : int
student_name : varchar
student_email : varchar
attended_date : date
答案 0 :(得分:0)
尝试此解决方案(找到here)
SELECT t1.email, course.course_title
FROM (SELECT email
FROM attendance
JOIN course
ON attendance.course_id = course.id
AND course.course_level = 1
GROUP BY email
HAVING COUNT(DISTINCT attendance.course_id) = 2) AS t1
CROSS JOIN course
LEFT JOIN attendance
ON attendance.course_id = course.id
AND attendance.email = t1.email
WHERE course.course_level =1
AND attendance.id IS NULL;