2012-02-13 130 views
0

我收到一個錯誤 - '無法啓動事務;太多的交易已經嵌套了。「當我使用7個聯合語句進行查詢時。如果我刪除一個聯合聲明並使其成爲6,那麼一切都運行完美。解決此問題的任何幫助都將非常有價值。MS Access 2007中多個union語句中的嵌套錯誤

謝謝!

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

看起來您有設計問題。最好從學校表格發佈一些樣本數據並提供關於期望結果的說明。 – Fionnuala 2012-02-13 20:53:06

回答

0

你需要持有學生細節的第二個表,如果您還沒有有一個。您只需要一條選擇語句,在該表上進行加入以提取學生姓名

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;