我该如何选择错过特定班级3次以上的学生?

时间:2019-04-05 11:25:30

标签: sql ms-access access-vba

我有一个名为“ tbl1Assiduidade”的表,其中有学生的出勤情况。 该表上有学生的姓名,日期,班级,出勤情况。它从其他表中获取这些值,并将它们保存在以下相应行中:Nome,Data,UFCD,Assiduidade。 “ Assiduidade”行(出勤)具有预定义的值:

如果该班级有该学生,则“ Assiduidade” = 1 如果学生失踪,则“ Assiduidade” = 2

如果学生缺3次同班,那么他将不通过该班

我想做的是做一个过滤器,这样每当我按下一个按钮时,它就会向我显示学生的姓名和他们失败的班级。如果没有一个学生没有上任何一门课,那么显然什么也不会出现。

我的代码显然有问题,如果不是全部,我已经搜索了很多东西,但没有找到我想要的东西,所以在此先感谢您的帮助!

Private Sub Comando192_Click()

Me.RecordSource = "SELECT tbl1Assiduidade.Nome, tbl1Assiduidade.UFCD 
FROM tbl1Assiduidade 
HAVING COUNT (tbl1Assiduidade.Assiduidade FROM tbl1Assiduidade WHERE tbl1Assiduidade.Assiduidade = 2) > = 3"

Me.Requery


End Sub

2 个答案:

答案 0 :(得分:1)

  • 选择所有记录其中 tbl1Assiduidade.Assiduidade = 2
  • 分组记录,依据 NameUFCD
  • 选择拥有 3条或更多记录的组。

    select t.Nome, t.UFCD 
    from tbl1Assiduidade t
    where t.Assiduidade = 2
    group by t.Nome, t.UFCD 
    having count(*) > 2
    

答案 1 :(得分:0)

不需要子查询,您可以通过使用过滤器在下面进行尝试

SELECT tbl1Assiduidade.Nome,
 tbl1Assiduidade.UFCD 
 FROM tbl1Assiduidade 
 bl1Assiduidade.Assiduidade = 2
group by tbl1Assiduidade.Nome,
 tbl1Assiduidade.UFCD
 having count(*)>=3