SQL 使用自连接和计数的查询问题

SQL query issue using self join and count

你好,我正在尝试 运行 我的最后一年项目的特定查询,我想在其中找出 2014 年和 2016 年学习计算机科学的本科生人数。我使用的表格是coursesEnrollments & courses 记录注册计算机科学课程的学生人数。

我的主管帮助我,他建议我在 courseEnrollments 上使用自加入,这样可以更轻松地为 2014 年和 2016 年注册的学生找到相同的 CS 注册。下面的查询显示了我是如何编写的:

SELECT COUNT(*) 
FROM courseEnrollment 
WHERE StudentID IN 
  (SELECT X.StudentID 
   FROM courseEnrollment Y
   JOIN courseEnrollment X
   ON Y.courseID = X.courseID
   JOIN courses C
   ON Y.courseID = C.courseID
   WHERE C.courseName = 'Computer Science'
   AND X.StartAcademicYear = 2014 
   AND Y.StartAcademicYear = 2016); 

当我在 MySQL 上 运行 时,我得到了错误的结果(4 而不是 6),因为它只计算了 2014 年而不是 2016 年注册计算机科学的学生。请告诉我如何解决这个问题。谢谢!

P.S。我只在内部查询中添加 "X.StudentID" 以阻止 MySQL 与 StudentID attribute.Changing 混淆它到 "Y.StudentID" 给了我 2。同样,我想知道为什么它不是算上计算机科学专业的所有 6 名学生(2 名 2016 年入学,4 名 2014 年入学)。

如果任何学生只能一次上这门课:

SELECT COUNT(*)  
FROM courseEnrollment ce
JOIN courses c ON ce.courseid=c.courseid
WHERE c.courseName = 'Computer Science' AND
      ce.startAcademicYear IN (2014, 2016)