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

时间:2017-02-23 21:26:09

标签: mysql count self-join

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

我得到了我的主管的帮助,他建议我在课程注册中使用自我加入,这样就可以更容易地为2014年注册的学生找到相同的CS注册。 2016.下面的查询向您展示了我的编写方式:

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属性混淆。将它更改为“Y.StudentID”给了我2.再次,我想知道为什么它不计算所有这6个学生(注册了计算机科学的2名参加2016年和4名参加2014年的学生入学。

0 个答案:

没有答案