0

我在 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 的值。为什么它要求这样做,我该如何阻止它这样做?

4

1 回答 1

0

MS Access 不理解 Count (*) 聚合上的 SELECT 语句。访问 SQL 语句如下所示。

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

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

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

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

于 2013-02-12T00:55:44.520 回答