• ベストアンサー

ユニオンクエリの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 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 ;

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

>本当は同じ形式のテーブルがこれ以外にもあり、 >SELECT 「受付番号」、「受付年月日」、「主管課等の受領」、「発信者」、「受信者」、「発信番号」、「発信番号」、「発信年月日」、「種別」、「件名」、「処分経過」、「備考」 >FROM (1)総務部総務課 >UNION ALL フィールドの区切り文字が日本語の句読点になっています

qazxcvfr4
質問者

お礼

失礼しました。 一度に各フィールドのパラメータが要求されなくなっただけで、順番にパラメータを要求されるようになっただけでした。相変わらず、全てのフィールドのパラメータが要求されています。 どのパラメータ入力画面でも何も入力せずにOKをクリックすると、データシートがでて何もデータが入ってない点は以前と同じなのですが、フィールド名ごとに列が分かれた点が句読点を変えて変わったところです。

qazxcvfr4
質問者

補足

何度もありがとうございます。 句読点を半角英数にすると、パラメータを要求されなくなりました。 しかし、受付番号だけは、パラメータを要求されるのですが、なぜでしょうか?受付番号はオートナンバー型で設定してあって、各テーブルで1番から連番で番号を付けていくので、クエリで統合したデータには同じ受付番号が何個もあることになるのですが、それが関係しているのでしょうか?

その他の回答 (3)

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.3

パラメータ要求してくるのはテーブルにカラムが無いからと思われます 1テーブル毎に確認して後でくっつけましょう。 補則 カラム名は特殊な文字を使ってなければ[]で囲む必要はありませんが安全の為囲まれたほうが良いと思います SELECT 受付番号,受付年月日... でもOKですが安全(もしも特殊文字が入っていてもエラーにならない)の為 SELECT [受付番号],[受付年月日]...と記述するのが正解かな。 また、テーブル名も同じです FROM (4)企画部評価調査課 これはエラーです()は予約文字になりますのでテーブル名が (4)企画部評価調査課 なら FROM [(4)企画部評価調査課] と記述します。 テーブル名やカラム名に半角の英数字と _ 以外を使用するのは極力止めましょう名前を必ず[]で包む必要になりますので マイクロソフトはユニコードを標準にしようとしていますので全角半角の垣根も無くなりつつあり全角でも記号()+-*?などを使うのもあまりお勧めは出来ません

qazxcvfr4
質問者

お礼

>また、テーブル名も同じです FROM (4)企画部評価調査課 これはエラーです()は予約文字になりますのでテーブル名が (4)企画部評価調査課 なら FROM [(4)企画部評価調査課] と記述します。 テーブル名やカラム名に半角の英数字と _ 以外を使用するのは極力止めましょう名前を必ず[]で包む必要になりますので 申し訳ありません。 ここを読み飛ばしていました。 []でくくると問題なく作動しました。 本当にありがとうございました。

qazxcvfr4
質問者

補足

詳しい説明まで丁寧にしていただいて、ありがとうございます。 統合しようとしている各テーブルのフィールド名と、SQL構文のSELECTに記載したものは、同じものなのですが・・ そういった話ではないのでしょうか。 >FROM (4)企画部評価調査課 これはエラーです()は予約文字になりますのでテーブル名が (4)企画部評価調査課 なら FROM [(4)企画部評価調査課] すみません。 SQL画面では(4)、等の○で囲った形になっています。 最初この板に貼った構文は、保存できなかったため、メモ帳を介したものだったので、変換してしまったようです。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

そのうまくいかないクエリのSQLをそのまままここに貼り付けてみてください

qazxcvfr4
質問者

補足

本当は同じ形式のテーブルがこれ以外にもあり、同じようにさらに続くのですが、点検お願いできるでしょうか? 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)
回答No.1

SQLというのはプログラムの一種です 使用する文字は名前,データ以外は全て半角英数でなければだめですよ SELECT [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] FROM (1)総務部総務課 UNION ALL SELECT [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] FROM (2)総務部人事労務課 UNION ALL SELECT [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] FROM (3)企画部企画課 UNION ALL SELECT [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] FROM (4)企画部評価調査課 UNION ALL SELECT [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] FROM ちょめちょめ ;

qazxcvfr4
質問者

お礼

即レス感謝します。 おっしゃるとおりに半角に変更すると、実行ボタンや保存ボタンをクリックしてもエラーメッセージが出なくなりました。 しかし、実行ボタンをクリックすると、パラメータを要求してきて、文字を入力する欄の上に [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] と出てきます。 また、空白のままOKボタンを押すと、フィールドタイトルが、 [受付番号],[受付年月日],[主管課等の受領],[発信者],[受信者],[発信番号],[発信番号],[発信年月日],[種別],[件名],[処分経過],[備考] の1フィールドのみの画面が出てきます。 再度の質問で申し訳ないのですが、どのようにすれば、うまく動作するか教えていただけないでしょうか?

関連するQ&A

  • ASPからSQLserverへの重複データ登録

    ASPで作成した画面からSQLserver2005にデータ登録を行う場合に重複データができてしまいます。 データを登録するテーブルは、主キーが設定されていません。 テーブルには本来ユニークとなる受付番号があり、画面にて登録を行う際に、画面の受付番号がテーブルに存在するか、SQLのSELECTで検索してチェックを行った後、存在しなければ登録(SELECTしてaddNew)を行っています。 このテーブルにデータ登録を行う画面は複数あり、どの画面も上記と同じ処理の流れになっています。 このような処理の流れの場合で、同一の受付番号のデータが登録されるのはどのような場合があるでしょうか。 思いつくのは、複数端末で同一受付番号を同時に登録した場合課と思うのですが、それ以外に可能性はありますでしょうか。 詳しい方、よろしくお願いします。

  • 不審な件名= 【***Spam***】(Suspicious Urls)私の氏名様 のメール

    ◆メールの件名が怪しくて開いて良いのか悪いのか悩んでいます。 件名を見る限り、初めての客に対する予約承諾の件名にしては冗談が過ぎると思います。 何が原因でこのようなことがおこるのか、お教えください。 自分の想像では、 ウイルスセキュリティーの設定が原因で件名の前に警告文字を合成して表示された。 または、不審者が情報を盗んでいたずらしている、など心配です。 ◆経過 1.私が(老舗で信頼できると思われる)あるお店のホームページで予約メールしました。 2.折り返して、自動返信のメール(概要は3.のとおり)が私に届きました。 3.予約ありがとうございます、現在まだ予約は成立していません、  正式な承諾メールは48時間以内に送信します。 4.約1時間後に不審な件名のメールを受信。 5.お店の受付担当者に直接電話確認したところ、予約は成立しておりました。  ただし、このようなメールについては受付担当者ではよくわからないとのことです。 ◆件名・送信者名・宛先などの概略 区分  件名/                       発信者名    /      宛名 2.  【店舗名】です、予約ありがとうございます。/ 正規の店舗名(漢字)/ 私の氏名様 3.  【***Spam***】(Suspicious Urls)私の氏名様/ 店舗名(ひらがな)/  私のアドレス  ◆環境 IE 6.0 OE 6.0 ソースネキストのウイルスセキュリティー

  • ACCESSの型変換(日付型)について

    諸賢者の皆様、よろしくお願いいたします。 【環境】 OS:WindowsXP ソフトウエア:ACCESS2003 【やりたいことの概要】  お客様より作業依頼を受領し、作業種別に応じて予め設定された作業期限を関数により求め、所定フィールドに設定したい。 【前提】 (1)テーブル「納品期限管理テーブル」  フィールド(1):プライマリーID(長整数型、固有値)  フィールド(2):作業番号(長整数型、固有値)  フィールド(3):受領日(日付型 書式は「yy/mm/dd hh:nn AM/PM」に設定)  フィールド(4):納品期限(テキスト型) (2)関数  モジュールに次の関数を作成。 Function 納品期限(作業番号 As Integer, 受領日 As Date, 受領時間 As Date) As Variant Dim date_received As Date '受領日 Dim time_received As Date '受領時 date_received = DateSerial(Year(受領日), Month(受領日), Day(受領日)) time_received = TimeSerial(Hour(受領時間), Minute(受領時間), Second(受領時間)) Select Case 作業番号 Case 101: '当日17時30分までの納品 納品期限 = date_received + TimeSerial(17, 30, 0) Exit Function Case 201: '翌日17時30分までの納品 納品期限 = (DateAdd("d", 1, date_received)) + TimeSerial(17, 30, 0) Exit Function Case 301: 'お客様との調整 納品期限 = "お客様との調整" Exit Function Case Else 納品期限 = "" End Select End Function 【これまでの試み】 (1)イミディエイトウインドウ  「?納品期限(101,#2008/5/20#,"9:00")」と入力すると「2008/05/20 17:30:00」と表示される。問題なし。 (2)フィールド更新  データを更新するため次のSQL文を実行する。  「UPDATE Job_List SET Job_List.担当受付日時 = 納品期限([作業番号],"#" & [担当受付日時] & "#","#" & Format([担当受付日時],"HH:NN") & "#");」  ■ここで問題発生。「型変換エラー」メッセージが出て、データを更新できません。  どなたか、解法を御教示願います。

  • ユニオンクエリ

    今 Accessを勉強中です。 ユニオンクエリとは、複数のテーブルをひとつに・・・・ という説明を見たのですが、具体的にはどんな時に利用するのでしょうか? 単純にたとえば1年生の名簿のテーブルを作成し、2年生のテーブル、3年生のテーブルを作成し、学年全部の名簿をユニオンクエリを利用するようなもの? でもこれって追加クエリでもできそうですよね? 簡単で具体的な例で教えていただけませんでしょうか?

  • ユニオンクエリについて

    お世話になります。 クエリAとクエリBがあり、ユニオンクエリにて両クエリを結合させたいと思っております。 しかし、クエリBにしかないフィールド(test)がある為、「列数が一致しません」となってしまいます。 このような場合、一般的にはどのようにして対処するのでしょうか。 恐らくクエリAにtestというフィールドを仮想的に?追加するのだと思いますが、やり方がわかりません。 ご教授の程、宜しくお願い致します。

  • ユニオンクエリについて

    複数のファイルにあるテーブルを使って、ユニオンクエリを作りたいと思っています。 他のデータベース内のテーブルを参照して、ユニオンクエリを組めるものでしょうか?やはり同じファイルにあるテーブル同士でなければだめですか? こちら初心者で、聞き方もおかしいかもしれませんが、よろしくお願いいたします。

  • SQLのUNIONを使って…

    SQLでUNIONを使ったあるメソッドがあります。 まずは、例を見せます。 SELECT '1' AS ID, '' AS 名前, FROM 情報 UNION SELECT ID, 名前 FROM 情報 ORDER BY ID 二つのテーブルを合体させた後、 IDを昇順に変更します。 しかし、「'1'のID」に限りレコードの最下部に表示したい。 ID順に並べ替えると最小値である'1'は当然、最上部に出ますが、 これを最下部にする事が目的です。 また、UNIONの上下にあるSELECT文を 互いに入れ替える等は禁止となっています。 環境は、オラクル10G。 CSEを使ってテストしています。

  • auで受信した文字化けしたメール

    auで受信した文字化けしたメール auのW64Sでメールを受信したところ、件名と差出人が「???」と文字化けしてしまい見れませんでした。 メールはとあるイベントに応募した際の応募確認メールで、 From:??? Sub:????あいうえお????完了 本文:まったく文字化けなし といった感じで届きました。 差出人はクリックするときちんとアドレスは表示されます。送信元は恐らくパソコンだと思います。 件名は所々きちんと表示されているのですが、大半が?で文字化けです。 本文はまったく文字化けしておらず、最後まできちんと記載されており普通に読めました。 アドレスは送信専用なので、返信しても無駄で、本文内にあった問い合わせ先は平日のみ対応の電話番号となっており、再送をお願いできません。 どうやら件名に受付番号が記載されているらしく、その受付番号が当落の確認に必要なのです。 どうにかして文字化けした部分を確認する方法はありますか?

    • ベストアンサー
    • au
  • ユニオンクエリで開いたクエリは修正することはできないのでしょうか?

    ユニオンクエリで開いたクエリは修正することはできないのでしょうか? 新たにクエリ上で作ったフィールドではなく、元々テーブルにあるフィールドの情報を変更したいのですができません。 これを回避する方法はありますか?(アクセス2003です) よろしくお願い致します。

  • ユニオンクエリ 「FROM 句の構文エラーです。」

    ユニオンクエリで複数のテーブルをつなげたいのですが SELECT * FROM 2003(T_案件) UNION ALL SELECT * FROM 2004(T_案件); とすると、 「FROM 句の構文エラーです。」 となります。 二つのフィールドの名前や数やデータ型は一緒のはずです。 何がダメなのでしょうか?

専門家に質問してみよう