2016-05-12 9 views
0

enter image description here更新複数INNERを持つテーブルの自身のコラムでは、JOINやUPDATEを使用しながら、複数のINNER JOINを使用しようと

更新します。ここで私が達成したいものです:表1 & 3試合彼らのclass_Numには、経費率タイプは表2
とマッチTABLE1 & 2試合で使用することを決定相対的経費率、
を掛けることによって
更新表1の生徒と教師の列私は表2に使用していた経費の種類を取得することができます上記のクエリではなく、どのようにそれはに収まることができます:

SELECT Table3.expense_type as ANS 
    FROM 
    ((
    Table1 INNER JOIN Table3 
    ON Table3.Class_Num = Table1.Class_Num) 
    INNER JOIN Table2 
    ON Table2.Month = Table1.Month); 

EDIT:その月はここで終了のクエリに私ができないの費用負担率

を取得します更新日atement?

答えて

3

テキスト値を列名として使用することはできません。したがって、クエリでexpense_typeが取得された場合は、列参照にすることはできません。だから、Switch関数でできるテキスト値からカラムへのマッピングを行う必要があります。このような

何か作業をする必要があります:

UPDATE (Table1 
INNER JOIN Table2 
     ON Table2.Month = Table1.Month) 
INNER JOIN Table3 
     ON Table3.Class_Num = Table1.Class_Num 
SET  Table1.Students = Table1.Students * 
       Switch(Table3.expense_type='expense1', Table2.expense1, 
         Table3.expense_type='expense2', Table2.expense2, 
         Table3.expense_type='expense3', Table2.expense3), 
      Table1.Teacher = Table1.Teacher *     
       Switch(Table3.expense_type='expense1', Table2.expense1, 
         Table3.expense_type='expense2', Table2.expense2, 
         Table3.expense_type='expense3', Table2.expense3); 
+0

感謝を!知らなかったケースを使用することができます。しかし、最初のCASEでエラーが発生します:クエリ式の構文エラー(演算子がありません) 'Table1.Students = Table1.Students * CASE ... – Alex

+0

同じ構文エラーですが、 – Alex

+0

ああ、私はそれがMS Accessでサポートされていないことを読んだだけです。 'Switch(...) 'で行う必要があります。回答が更新されました! – trincot

関連する問題