MS Access 2007 中的多个联合语句中的嵌套错误
Posted
技术标签:
【中文标题】MS Access 2007 中的多个联合语句中的嵌套错误【英文标题】:Nested Error in multiple union statement in MS Access 2007 【发布时间】:2012-02-13 20:46:01 【问题描述】:我收到一个错误 - '无法开始交易;已经嵌套了太多事务。当我使用 7 个联合语句进行查询时。如果我删除一个联合声明并将其设为 6,那么一切都会完美运行。解决此问题的任何帮助都将非常有价值。
谢谢!
我正在使用的表格:
School_TBL 由课程栏和学生栏组成。一个学生可以学习多门课程(因此它是一个多值领域)
SQL 语句如下:
select 'John' as Student Name, Sum(IIf([CourseID]=1,1,0)) as Math, Sum(IIf([CourseID]=2,1,0)) AS English
From School_TBL
where (School_TBL.StudentID.value = 2 and School_TBL.CourseID.Value=1)
GROUP BY School_TBL.StudentID.Value
UNION ALL
select 'Jane' as Student Name, Sum(IIf([CourseID]=1,1,0)) as Math, Sum(IIf([CourseID]=2,1,0)) AS English
From School_TBL
where (School_TBL.StudentID.value = 3 and School_TBL.CourseID.Value=1)
GROUP BY School_TBL.StudentID.Value
UNION ALL
select 'Jim' as Student Name, Sum(IIf([CourseID]=1,1,0)) as Math, Sum(IIf([CourseID]=2,1,0)) AS English
From School_TBL
where (School_TBL.StudentID.value = 4 and School_TBL.CourseID.Value=1)
GROUP BY School_TBL.StudentID.Value
UNION ALL
select 'Hank' as Student Name, Sum(IIf([CourseID]=1,1,0)) as Math, Sum(IIf([CourseID]=2,1,0)) AS English
From School_TBL
where (School_TBL.StudentID.value = 5 and School_TBL.CourseID.Value=1)
GROUP BY School_TBL.StudentID.Value
UNION ALL
select 'Jay' as Student Name, Sum(IIf([CourseID]=1,1,0)) as Math, Sum(IIf([CourseID]=2,1,0)) AS English
From School_TBL
where (School_TBL.StudentID.value = 6 and School_TBL.CourseID.Value=1)
GROUP BY School_TBL.StudentID.Value
UNION ALL
select 'Anna' as Student Name, Sum(IIf([CourseID]=1,1,0)) as Math, Sum(IIf([CourseID]=2,1,0)) AS English
From School_TBL
where (School_TBL.StudentID.value = 7 and School_TBL.CourseID.Value=1)
GROUP BY School_TBL.StudentID.Value
UNION ALL
select 'Amy' as Student Name, Sum(IIf([CourseID]=1,1,0)) as Math, Sum(IIf([CourseID]=2,1,0)) AS English
From School_TBL
where (School_TBL.StudentID.value = 8 and School_TBL.CourseID.Value=1)
GROUP BY School_TBL.StudentID.Value
UNION ALL
select 'Jason' as Student Name, Sum(IIf([CourseID]=1,1,0)) as Math, Sum(IIf([CourseID]=2,1,0)) AS English
From School_TBL
where (School_TBL.StudentID.value = 9 and School_TBL.CourseID.Value=1)
GROUP BY School_TBL.StudentID.Value
【问题讨论】:
您似乎遇到了设计问题。最好从学校表中发布一些示例数据,并附上关于预期结果的说明。 【参考方案1】:如果您还没有第二张表格,您需要保存学生详细信息。您只需要一个在该表上执行连接的 select 语句即可提取学生姓名
SELECT Student.studentName, Sum(IIf([CourseID]=1,1,0)) AS math, Sum(IIf([CourseID]=2,1,0)) AS english
FROM school_tbl INNER JOIN Student ON school_tbl.studentId = Student.Studentid
GROUP BY Student.studentName;
【讨论】:
以上是关于MS Access 2007 中的多个联合语句中的嵌套错误的主要内容,如果未能解决你的问题,请参考以下文章