• ベストアンサー

ユニオンクエリについて

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

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

  • ベストアンサー
  • bon459
  • ベストアンサー率36% (4/11)
回答No.1

クエリA側にダミーの項目を1つ増やすのであれば以下の様にすればよいと思います。 クエリA select   A.Col1   ,A.Col2   ,A.Col3 from A クエリB select   B.Col1   ,B.Col2   ,B.Col3   ,B.Col4 from B としてUNIONするとこうなります。 select   A.Col1  ,A.Col2  ,A.Col3  ,'' AS Col4 from A union all select   B.Col1  ,B.Col2  ,B.Col3  ,B.Col4 from B

naoto0216
質問者

お礼

早速のご回答ありがとうございます。 教えて頂いた通りにやってみたのですが、ユニオンクエリとする以前に「SELECTステートメントが間違っている予約語や引数を含んでいるか、区切り記号が正しくありません。」と表示されてしまいます。。 クエリAのSELECTの最後に今回追加したいtestを下記のように追加しました。  SELECT ・・・・・, '' AS test

naoto0216
質問者

補足

再度確認したところ、うまくいきました。 ありがとうございました。

関連するQ&A

  • ACCESSユニオンクエリでORDER BYエラー

    お世話になります。 クエリAとBがあり、それぞれのクエリでは製品コードの先頭6文字(製品コード先頭6文字: Left([マスター]![製品コード],6))の昇順で並び替えしてます。 個々のクエリでは問題なく並び替えされるのですが、この二つのクエリをユニオンクエリで結合するとエラーとなってしまいます。 『ORDER BY 式 (Left([マスター]![製品コード],6))にクエリに選択されていないフィールドが含まれています。ORDER BY 式 (Left([マスター]![製品コード],6))に含めることができるのは、最初のクエリで要求されたフィールドだけです。』 となります。 調べたところ、『ユニオン クエリで使用されるテーブルにおいて、1 つ以上のフィールド名を変更した場合に発生します。 』ということでした。 http://support.microsoft.com/kb/282322/ja 確かに、それぞれのクエリでフィールド名を変更しているのですが・・・このような場合、どのようにすればうまく結合できるのでしょうか。それとも不可能なのでしょうか。。 以上、よろしくお願い致します。

  • Access2010「クエリが複雑すぎます」

    お世話になります。 ユニオンクエリAがあり、そのクエリを使用してクエリB(テーブルや別のクエリとも紐付け)を作成しました。問題なく抽出できます。  <クエリB>  ユニオンクエリA ----→ クエリX              |               ---→ テーブル1              |               ---→ テーブル2              |               ---→ テーブル3 新たにユニオンクエリAを使って、クエリCを作成したところ「クエリが複雑すぎます」と表示されてしまいます。いくつかのテーブル/クエリと紐付けていたので、一つずつ取っていったところ、最終的にはユニオンクエリA一つでもエラーが出てしまいます。単純な選択クエリです。 クエリBは同じユニオンクエリAを使い、複数のクエリとテーブルとを紐付けているのにも関わらずエラーとなりません。。 どのようなことが考えられますでしょうか。 Accessを起動し直したり、端末自体も再起動しましたが状況変わらずでした。 また、ユニオンクエリA単体を開いても問題無く抽出されます。 ご教授の程、宜しくお願い致します。

  • UNIONとUNION ALLの違いについて

    お世話になります。 一応違いについては把握しておりますが、念のため 確認させて下さい。 以下のクエリがあります。 クエリA  受注日   型番  数量の合計  2015/01/01 AAA   10  2015/01/01 BBB   5 クエリB  受注日   型番  数量の合計  2015/01/01 BBB   5  2015/01/01 CCC   10  2015/01/02 CCC   5 クエリA UNION クエリB の場合は、  受注日   型番  数量の合計  2015/01/01 AAA   10  2015/01/01 BBB   5  2015/01/01 CCC   10  2015/01/02 CCC   5 となると思ってます。 ※型番Bの重複がマージされる クエリA UNION ALL クエリB の場合は、  受注日   型番  数量の合計  2015/01/01 AAA   10  2015/01/01 BBB   5  2015/01/01 BBB   3  2015/01/01 CCC   10  2015/01/02 CCC   5 となると思ってます。  ※重複があっても単純にくっつける。 あってますでしょうか? で、例えば、テーブルA及びBにそれぞれ「ライン」という項目があり、 テーブルAの方は、L01、L02となっており、テーブルBの方は LL01、LL02となっていたとしたら(要するにテーブルAのラインと テーブルBのラインが重複することが無い)、UNIONでも UNION ALLでも、どちらでも結果が同じになる・・・という ことであってますでしょうか? ご教示の程、宜しくお願い致します。

  • ACCESSクエリでの結合の仕方

    ACCESS 2003を使用しています。 テーブルA テーブルB テーブルC の3テーブルでクエリを作っています。結合的には・・・ テーブルAのフィールドX⇔テーブルCのフィールドX テーブルBのフィールドX⇔テーブルCのフィールドX です。 これで3テーブルに共通する一致データのみ抽出はできるのですが、 3テーブルに共通する一致データに加えて、テーブルAとテーブルBの不一致データ(テーブルCに対する)も一緒に抽出できるようにしたいのです。 2テーブルだけの結合であれば、結合プロパティを、 テーブルAのフィールドX⇒テーブルCのフィールドX のようにすることで実現できるのですが、3テーブルの結合の場合、どのようにすればよいでしょうか? テーブルAのフィールドX⇒テーブルCのフィールドX テーブルBのフィールドX⇒テーブルCのフィールドX のようにしてみましたが、「あいまいな外部結合が含まれているので、SQLステートメントを実行できません。云々。。。」と警告エラーがでてしまいます。 どなたが、ご教授いただけると助かります。 ご面倒ですが、よろしくお願い致します。

  • ACCESSクエリでの結合の仕方・・・SQL文かも

    ACCESS 2003を使用しています。 テーブルA テーブルB の2テーブルでクエリを作っています。 結合的には・・・ テーブルAのフィールドX ⇔ テーブルBのフィールドY です。 これで2テーブルに共通する一致データのみ抽出はできるのですが、 2テーブルに共通する一致データに加えて、 2テーブルの不一致データも一緒にクエリ表示されるようにしたいのです。 欲しいのは抽出イメージは、以下のような感じのクエリ結果です。 テーブルA:フィールドX|テーブルBのフィールドY a             |(空) (空)           |b c             |c d             |(空) (空)           |e f              |f  g             |(空) h             |h おそらく、SQL文を書く必要があるとは、想像できるのですが・・・ どなたか、ご教授いただけると助かります。 よろしくお願いします。

  • アクセス クエリについて2点お教え下さい。

    A(1000件)とB(500件)の2つのテーブルがあります。 この2つをキーでつなぎ、Aの全てのデータを表示し、 2つの一致したデータのみにBの●・△・■のフィールドを追加したい。 【質問1】 2つを繋ぐ完全一致のキーがありませんので まずは電話番号で確認し、その後住所、その後名前と・・・ 最終的にはこの3つの内ひとつでも一致したものにBのフィールドを 追加したいのですが、どのようにするのがベストでしょうか? 【質問2】 ABのテーブルどちらにも重複したデータが含まれている場合 2つを繋ぎ“Aの全てのレコードとBの同じ結合フィールドのレコードだけを含める” にチェックを入れてもAの1000件を超えて表示されます。 通常、“Aの全てのレコードとBの同じ結合フィールドのレコードだけ”なので 表示されるレコードは1000件ですよね? 重複データを削除する以外に1000件で表示する方法はないのでしょうか? よろしくお願い致します。

  • アクセス2007のクエリについて

    アクセス2007のクエリを作成しているのですけど、テーブルを追加してフィールドを配置して実行すると 例 店名 A店 A店 A店 A店 A店 B店 B店 B店 B店 B店 というような感じになってしまいます。なぜでしょうか?ご教授お願いします。 

  • ユニオンクエリで複数ファイルをまとめるには

    ★はじめまして 会社でアクセスを使用している初心者です。 社員データーをアクセスファイルで管理しています。 10人が一つファイルを持って使用しています。 なので、ファイル数は10です。 フィールド(項目)数が128です。 全てのファイルは同じ項目です。 【問題】 (1)社員データーを検索する際に、全てのファイルを開いて検索すると非常に時間がかかります。 (2)社員データーをCSVでエクスポートして、EXCELで集計・分析する際に全てのファイルからエクスポートすると時間がかかります。 【対策】 (1)全てのファイルをまとめようと まとめファイルを作成して 全てのテーブルをリンクして(10ファイル) ユニオンクエリでまとめようと思いました。 【結果】 エラーです。 『定義されているフィールドが多すぎます』と表示されます。 【教えてください】 (1)フィールドが多すぎるとユニオンクエリは使用できないのですか? (2)他に全てのファイルをまとめる方法はないのでしょうか? ご教授お願いします。

  • MySQLのクエリの質問です

    テーブルAにフィールドBとフィールドCがあります。 phpmyadminを使って、フィールドBの値が一致するが、フィールドCの値が不一致のレコードを検索したいと思っています。 このような場合はどのようなクエリを書けばよろしいでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • Accessのユニオンクエリーで3つのクエリを集計

    Accessのユニオンクエリーで3つのクエリを集計したいのですが Aクエリ 氏名  役員名  就任月  任期 山田   会長   24    1 田中  副会長   24    1 Bクエリ 氏名  役員名  就任月  任期 山田  副会長   12    0 田中   理事   24    1 Cクエリ 氏名  役員名  就任月  任期 山田   会長    24    1 田中  副会長   24    1 結果 氏名  役員名  就任月  任期 山田   会長    48    2 山田  副会長   12    0 田中  副会長   48    2 田中   理事   24    1 このような結果を得ることは出来ますでしょうか? SELECT [氏名], [役員名],[就任月],[任期] FROM [Aクエリ名] UNION SELECT [氏名], [役名],[就任月],[任期] FROM [Bクエリ名] UNION SELECT [氏名], [役名],[就任月],[任期] FROM [Cクエリ名]; このように記述すると 氏名  役員名  就任月  任期 山田   会長   24    1 山田  副会長   12    0 山田   会長   24    1 田中  副会長   24    1 田中   理事   24    1 田中  副会長   24    1 このような結果になってしまうのですが・・