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 中的多个联合语句中的嵌套错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用多个组合框过滤 MS Access 中的数据?

MS Access 2007 中的 SQL 内部连接

MS Access 2007 上的 MS Graph 图表中的图表区域有时为空白

MS Access 2007 中的 SQL JOIN 问题

如何从 MS access 2007 中的特定表中选择索引

MS Access 中的多行插入语句