如何使用group by或count函数进行内连接

时间:2016-05-21 19:59:09

标签: sql vb.net ms-access group-by inner-join

我使用此SQL查询从访问数据库中获取数据

SELECT  Absence.date_, stages.name, course.course_name, student.name AS st_name 
FROM  (((Absence INNER JOIN  course ON Absence.course_id = course.ID) 
INNER JOIN       stages ON course.id_stage = stages.ID) 
INNER JOIN     student ON Absence.student_id = student.ID AND stages.ID = student.stage_id`

当我不打算对字段进行分组或获取字段数时,它会向我显示此错误消息

  

尝试执行不包含指定的查询   表达' Absence.date _'作为聚合函数的一部分

如何获取行数,将其与st_name区分开来,以及按阶段名称或课程名称

分组

2 个答案:

答案 0 :(得分:1)

要获得计数,您应该使用

SELECT  Absence.date_, stages.name, course.course_name, student.name AS st_name, count(*) 
FROM  (((Absence INNER JOIN  course ON Absence.course_id = course.ID) 
INNER JOIN       stages ON course.id_stage = stages.ID) 
INNER JOIN     student ON Absence.student_id = student.ID AND stages.ID = student.stage_id
GROUP BY Absence.date_, stages.name, course.course_name, student.name

答案 1 :(得分:-1)

哪个表包含“Absence.date_”字段? 而且您不需要指定“内部”(或者就此而言是自然的)。

使用聚合函数(Count(),Sum(),ect)时,group by必须包含与select语句相同的字段列表。并且该错误表明Absence.date_不作为from子句中任何表中的字段存在。但是,您的查询中没有Group By语句。