2016-03-23 19 views
1

私はSQLを初めて使用しており、以下のSQLを使用して複数のテーブルに参加するためにMS AccessでSQLクエリを作成しようとしています。これはアクセステストを行うためのものです。MS Access SQLクエリ - 結合エラー

有するが意図iは太字

SELECT 

Table1.Role, 
Table1.Object, 

表1、表2は、ユーザーがマップされた

Table2.Role, 
Table2.User_Name, 

役割を有するベーステーブル、権限オブジェクトをされている達成するためにどのような説明しました役割へ

Table3.Org_Level_Desp, 
Table3.Org_LEvel_Values_1, 

表3は、このユーザがアクセスできる企業または植物決定、組織レベルでのコントロールを有する

Table4.Role_Description, 

表4は、表1

Table5.Full_Name, 
Table5.Department, 
で言及役割の役割の説明を持っています

表5には、ユーザー名と部門があります。一般的なフィールドが1

テーブルにテーブル5から必要なテーブルの結合1

FROM 
Table2 
RIGHT JOIN Table5 ON Table2.USER_NAME=Table5.USer 

表を表2、図3および図4から提出必須参加2

FROM 
Table1 
RIGHT JOIN Table2 ON Table1.Role=Table2.Role 
RIGHT JOIN Table3 ON Table1.Role=Table3.Role 
RIGHT JOIN Table4 ON Table1.Role=Table4.rOLE 

テーブルからユーザ名

上記のクエリで複数の構文エラーが発生しました。私は何か基本的に欠けていると思う - だれでも助けることができる?

ありがとうございます! Uday


私はコメントでさらに追加できません。申し訳ありませんが、以下は、私が更新したコードですが、まだ同じエラーが発生しています。あなたがアドバイスしていただけますか ?以下は

SELECT 

TABLE1.Role, 
TABLE1.Object, 
TABLE1.Field_name, 
TABLE1.Value, 
TABLE1.[and], 
TABLE1.ID_whether_object_is_deleted, 

TABLE2.Role, 
TABLE2.User_Name, 
TABLE2.End_date, 

TABLE3.Org_Level_Control, 
TABLE3.Org_LEvel_Values_1, 
TABLE3.Org_LEvel_Values_2, 

Table4.Role_Description, 

TABLE6.Field_Short_Description, 

TABLE7.Object_Level_Desp, 

TABLE8.Auth_Obj_Text, 

TABLE5.Full_Name, 
TABLE5.Department, 

TABLE9.Valid_to, 
TABLE9.Lock, 

from ((((((TABLE1 INNER JOIN TABLE2 ON TABLE1.Role=TABLE2.Role) 
INNER JOIN TABLE3 ON TABLE1.Role=TABLE3.Role) 
INNER JOIN Table4 ON TABLE1.Role=Table4.role) 
INNER JOIN TABLE6 ON TABLE1.Field_Name=TABLE6.Field_Name) 
INNER JOIN TABLE7 ON TABLE1.[Object]=TABLE7.Org_Object) 
INNER JOIN TABLE8 ON AGR_TABLE1.Field_name=TABLE8.Field_Name) 

FROM 
(TABLE2 INNER JOIN TABLE5 ON TABLE2.USER_NAME=TABLE5.[USer]) 
INNER JOIN TABLE9 ON TABLE2.USER_NAME=TABLE9.[User]); 

は、私はまだ同じエラーを取得し、更新されたコードです。あなたがアドバイスしていただけますか ?

SELECT 

TABLE1.Role, 
TABLE1.Object, 
TABLE1.Field_name, 
TABLE1.Value, 
TABLE1.[and], 
TABLE1.ID_whether_object_is_deleted, 

TABLE2.Role, 
TABLE2.User_Name, 
TABLE2.End_date, 

TABLE3.Org_Level_Control, 
TABLE3.Org_LEvel_Values_1, 
TABLE3.Org_LEvel_Values_2, 

Table4.Role_Description, 

TABLE6.Field_Short_Description, 

TABLE7.Object_Level_Desp, 

TABLE8.Auth_Obj_Text, 

TABLE5.Full_Name, 
TABLE5.Department, 

TABLE9.Valid_to, 
TABLE9.Lock, 

from ((((((TABLE1 INNER JOIN TABLE2 ON TABLE1.Role=TABLE2.Role) 
INNER JOIN TABLE3 ON TABLE1.Role=TABLE3.Role) 
INNER JOIN Table4 ON TABLE1.Role=Table4.role) 
INNER JOIN TABLE6 ON TABLE1.Field_Name=TABLE6.Field_Name) 
INNER JOIN TABLE7 ON TABLE1.[Object]=TABLE7.Org_Object) 
INNER JOIN TABLE8 ON AGR_TABLE1.Field_name=TABLE8.Field_Name) 
+1

あなたは複数持つことができませんステートメント「FROM」:

は、あなたのSELECT句の末尾に余分なコンマを持っています。 "Table4"への参加の下で上記のロジックに従うには、RIGHT JOIN Table5 ON Table2.UserName = Table5.Userを試してください。 –

+0

ちなみに、MS Accessを使用している場合、クエリの最後にコロンを付ける必要があります。 –

+1

ms-accessというタグが付いている場合は、テーブルを作成し、グラフィカルクエリデザイナを使用してクエリを生成してみてください。 –

答えて

1

私はあなたがSQLを学習している場合は特に、RIGHT JOINをしたいと思う理由はわかりません。 INNER JOINで開始してください。それが行を残している場合は、LEFT JOINに移動します。 MS Accessで

構文は、括弧を使用しています

SELECT . . . 
FROM (((Table1 INNER JOIN 
     Table2 
     ON Table1.Role = Table2.Role 
     ) INNER JOIN 
     Table3 
     ON Table1.Role = Table3.Role 
    ) INNER JOIN 
     Table4 
     ON Table1.Role = Table4.rOLE 
    ) INNER JOIN 
    Table5 
    ON Table2.USER_NAME = Table5.USer 

あなたは、あなたがSELECTにしたい列を選択することができます。

括弧は他のデータベースでは非常に扱いにくいものです。

+0

ありがとうございます。質問にお答えするのに感謝します。私は私たちの内部結合を試み、それがどのように動作するか見る。私は上記のクエリを試したときに、 "SELECTステートメントは、スペルミスや紛失、または句読点が間違っている予約語や引数名を含んでいます"あなたは間違っている場所を教えてくださいできますか? @UdayKumar。 –

+0

。 。 'user'は予約語です。おそらく列に何か他の名前を付けるか、または角カッコで囲んでください。 –

1

Re:更新されたSQL。

Valueは、reserved word in Access SQLであるので、Role, Object, Lockのような他のものであってもよい。これらを[大括弧]に入れます。どちらもSELECT節とFROM節です。

TABLE9.Valid_to, 
TABLE9.Lock, <== delete this comma 

from ((((((TABLE1 INNER JOIN TABLE2 ON TABLE1.Role=TABLE2.Role) 
関連する問題