我在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的值。为什么要求这样做,如何阻止它这样做?
答案 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语句可以识别所有表源。