2017-11-15 18 views
0

を動作していないとWindowsフォームアプリケーションのC#で参加複数のクエリは、私はMS Accessデータベース内の3つのテーブルを持っているMS Accessの

ユーザー、 部屋、

room_historyは、両方のユーザー、部屋番号が含まれています room_history 。私がroom_historyでユーザーに参加しようとすると、正常に取得したデータはroomとroom_historyと同じになります。 3つのテーブルをすべて結合するクエリです。

"SELECT users.*,rooms.room_id,rooms.room_name,rooms.type,room_history.start_date,room_history.end_date FROM users " + 
       "LEFT JOIN room_history ON room_history.user_id= users.user_id " + 
       "LEFT JOIN rooms ON room_history.room_id = rooms.room_id"; 

上記のクエリを使用すると、次のエラーが発生します。

構文エラークエリ式内(演算子がありません)

'room_history.user_id = users.user_id LEFTはroom_history.room_id = rooms.room_iでお部屋を登録しよう' 私は、チェック/私のデータベーステーブル名を変更データベースをコンパクトにする。

+0

ジョインの周りに括弧がいくつかあります。GUIクエリーデザイナーを使用して並べ替えます。 – Gustav

答えて

0

されていますここで基本に到達し、Accessクエリデザインビューツールを使用してこのクエリを設計できますか? ...テキストベースのSQL文を使用してこれを解決しようとするのではなく...

クエリ設計機能を使用してAccessでクエリを作成し、正しいレコードセットを返すときに正しく実行されることを確認したら - テキストベースのSQL文を表示するには、このオプションを使用して(Design Viewではなく)SQL Viewに配置します。

+0

ありがとう、本当に助かる –

0

代わりに、テーブルの別名ので試してみてください - 問題はタイプように見えますが、予約SQLキーワードです:

SELECT U.*,R.room_id,R.room_name,R.[type],RH.start_date,RH.end_date FROM users U 
LEFT JOIN room_history RH ON RH.user_id= U.user_id 
LEFT JOIN room R ON RH.room_id = R.room_id 
+0

答えをありがとう、それは動作しません –

+0

私の編集を参照してください[タイプ]は予約済みのキーワードです。それのまわりに括弧を入れてください... –

+0

はまだ動作しません –

0

あなたの問題は、あなたの命名規則です。

あなたはtypeは、データベースの予約語である

rooms.type 

を使用。

あなたは

syntax error (missing operator) in query expression 'room_history.user_id = users.user_id LEFT JOIN rooms on room_history.room_id = rooms.room_i' 

を受信エラーがリンクの下に論じ命名規則に関係します。

https://support.microsoft.com/en-ph/help/932994/you-receive-an-error-message-when-you-run-a-query-in-microsoft-access

あなたは単に予備ワード、(例えば[type], [start_date],[user_id])されている、あなたのテーブル名のすべてに括弧([])を置いてもよい「であるとして、」あなたのクエリを使用することを主張したい場合

+0

私はそれをチェックします。私のすべてのフィールドは小文字で始まり、その中にはuser_idのようなアンダースコアが含まれています。とにかくそれは助けにならない。 3つ目のテーブルに参加しようとすると、2つのテーブルが正常に結合することがわかりません –

+0

@MuhammadUsamaSaeed私は自分の答えを更新しました。 –

+0

お問い合わせありがとうございます。アクセスクエリのデザインを使用していただきありがとうございます SELECTユーザー*、room_history.start_date、room_history.end_date、rooms.room_name FROM rooms INNER JOIN(ユーザーINNER JOIN room_history ON users.user_id = room_history.occupant_id )ON rooms.room_id = room_history.room_id; エラーが「必要なパラメータに値が指定されていません」 –

関連する問題