- ベストアンサー
ユニオンクエリのSQL構文について
アクセス2007を使っていて、同じデータ構造のテーブルを検索がしやすいようにと思って、くっつけようとしているのですが、SQL構文がおかしいようで機能しないというか、保存さえもできません。 私の作った構文を貼り付けますので、どこがおかしいのかご指摘お願いいたします。画面上ではSELECT文は一行に収まっています。 よろしくお願いいたします。 SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (1)総務部総務課 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (2)総務部人事労務課 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (3)企画部企画課 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (4)企画部評価調査課 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 ;
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>本当は同じ形式のテーブルがこれ以外にもあり、 >SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 >FROM (1)総務部総務課 >UNION ALL フィールドの区切り文字が日本語の句読点になっています
その他の回答 (3)
- noah7150
- ベストアンサー率46% (116/251)
パラメータ要求してくるのはテーブルにカラムが無いからと思われます 1テーブル毎に確認して後でくっつけましょう。 補則 カラム名は特殊な文字を使ってなければ[]で囲む必要はありませんが安全の為囲まれたほうが良いと思います SELECT 受付番号,受付年月日... でもOKですが安全(もしも特殊文字が入っていてもエラーにならない)の為 SELECT [受付番号],[受付年月日]...と記述するのが正解かな。 また、テーブル名も同じです FROM (4)企画部評価調査課 これはエラーです()は予約文字になりますのでテーブル名が (4)企画部評価調査課 なら FROM [(4)企画部評価調査課] と記述します。 テーブル名やカラム名に半角の英数字と _ 以外を使用するのは極力止めましょう名前を必ず[]で包む必要になりますので マイクロソフトはユニコードを標準にしようとしていますので全角半角の垣根も無くなりつつあり全角でも記号()+-*?などを使うのもあまりお勧めは出来ません
お礼
>また、テーブル名も同じです FROM (4)企画部評価調査課 これはエラーです()は予約文字になりますのでテーブル名が (4)企画部評価調査課 なら FROM [(4)企画部評価調査課] と記述します。 テーブル名やカラム名に半角の英数字と _ 以外を使用するのは極力止めましょう名前を必ず[]で包む必要になりますので 申し訳ありません。 ここを読み飛ばしていました。 []でくくると問題なく作動しました。 本当にありがとうございました。
補足
詳しい説明まで丁寧にしていただいて、ありがとうございます。 統合しようとしている各テーブルのフィールド名と、SQL構文のSELECTに記載したものは、同じものなのですが・・ そういった話ではないのでしょうか。 >FROM (4)企画部評価調査課 これはエラーです()は予約文字になりますのでテーブル名が (4)企画部評価調査課 なら FROM [(4)企画部評価調査課] すみません。 SQL画面では(4)、等の○で囲った形になっています。 最初この板に貼った構文は、保存できなかったため、メモ帳を介したものだったので、変換してしまったようです。
- CHRONOS_0
- ベストアンサー率54% (457/838)
そのうまくいかないクエリのSQLをそのまままここに貼り付けてみてください
補足
本当は同じ形式のテーブルがこれ以外にもあり、同じようにさらに続くのですが、点検お願いできるでしょうか? SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (1)総務部総務課 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (2)総務部人事労務課 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (3)企画部企画課 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (4)企画部評価調査課 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (5)財務部財政課 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (6)財務部経理課 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (7)監査支援室 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (8)施設企画課 UNION ALL SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 FROM (9)施設管理課 ;
- CHRONOS_0
- ベストアンサー率54% (457/838)
SQLというのはプログラムの一種です 使用する文字は名前,データ以外は全て半角英数でなければだめですよ SELECT [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] FROM (1)総務部総務課 UNION ALL SELECT [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] FROM (2)総務部人事労務課 UNION ALL SELECT [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] FROM (3)企画部企画課 UNION ALL SELECT [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] FROM (4)企画部評価調査課 UNION ALL SELECT [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] FROM ちょめちょめ ;
お礼
即レス感謝します。 おっしゃるとおりに半角に変更すると、実行ボタンや保存ボタンをクリックしてもエラーメッセージが出なくなりました。 しかし、実行ボタンをクリックすると、パラメータを要求してきて、文字を入力する欄の上に [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] と出てきます。 また、空白のままOKボタンを押すと、フィールドタイトルが、 [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] の1フィールドのみの画面が出てきます。 再度の質問で申し訳ないのですが、どのようにすれば、うまく動作するか教えていただけないでしょうか?
お礼
失礼しました。 一度に各フィールドのパラメータが要求されなくなっただけで、順番にパラメータを要求されるようになっただけでした。相変わらず、全てのフィールドのパラメータが要求されています。 どのパラメータ入力画面でも何も入力せずにOKをクリックすると、データシートがでて何もデータが入ってない点は以前と同じなのですが、フィールド名ごとに列が分かれた点が句読点を変えて変わったところです。
補足
何度もありがとうございます。 句読点を半角英数にすると、パラメータを要求されなくなりました。 しかし、受付番号だけは、パラメータを要求されるのですが、なぜでしょうか?受付番号はオートナンバー型で設定してあって、各テーブルで1番から連番で番号を付けていくので、クエリで統合したデータには同じ受付番号が何個もあることになるのですが、それが関係しているのでしょうか?