与加入MS Access数据库相关的问题

时间:2012-12-20 16:21:42

标签: sql database ms-access

我在MS Access数据库中使用以下查询:

SELECT SD.RollNo, SD.Name , ED.ExamName, (
    SELECT count(*) 
    FROM (
        SELECT DISTINCT innerED.StudentId 
        FROM ExamDetails innerED 
        WHERE innerED.StudentId=SD.StudentId 
    )
) AS StudentId
FROM StudentDetails SD 
LEFT OUTER JOIN ExamDetails ED 
    ON SD.StudentId= ED.StudentId

每当我执行此查询时,都会出现一个对话框,询问参数SD.StudentId的值。为什么要求这样做,如何阻止它这样做?

1 个答案:

答案 0 :(得分:0)

MS Access无法理解Count(*)Aggregate上的SELECT语句。访问SQL语句是这样的。

 SELECT DISTINCT innerED.StudentId
 FROM ExamDetails innerED 
 WHERE innerED.StudentId=SD.StudentId 

因为别名AS STUDENTID在语句结束之后出现,所以这个Select语句不能识别它,因此它不知道.StudendID是什么,所以它假定它是一个参数。

MS Access,当遇到查询本身尚未识别的参数时,将提示用户输入值。

重写查询,以便此Select语句可以识别所有表源。