2012-02-13 7 views
0

エラーが発生しました - 'トランザクションを開始できませんでした。あまりにも多くのトランザクションがすでにネストされています。クエリに7つの結合ステートメントを使用すると私が1つの結合文を削除して6にすると、すべてが完全に実行されます。この問題を解決するための助けは非常に貴重です。MS Access 2007の複数のユニオンステートメントでネストされたエラー

ありがとうございます!

私が使用していますテーブル:

School_TBLは、コース列、および学生の列で構成されています。すでにない場合は、学生の詳細情報を保持する第2のテーブルを必要とする

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

答えて

0

:ここ

は、SQL文のある一人の学生はもちろん、より多くを取ることができます(そのためには、複数値フィールドです) 1つ持っている。テーブルに参加して学生名を抽出するSELECT文が1つだけ必要です

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; 
関連する問題