#621 複雑なユニオンクエリの作り方 クエリ

Accessでは、ユニオンクエリは通常のクエリとは異なり「デザインビュー」を使って作ることができません。先にせっかくデザインビューで選択クエリを作っても、リボンの[ユニオン]をクリックすると「SQLビュー」になってしまい、しかもデザインビューの内容は反映されません。つまり、ユニオンクエリはSQL文を直接記述して作成する必要があります。

しかしかといって、AccessのSQLの構文をマスターしないとユニオンクエリがまったく作れないということもありません。次のように、「デザインビュー」と「SQLビュー」を交互にうまく切り替えて利用することで、複雑なユニオンクエリでも比較的簡単に作ることができます。


その手順は次の通りです(要領を掴めば多少順番が違ってもOKです)。
  1. まず、リボンより[作成]-[クエリデザイン]を選択します。


  2. 「テーブルの表示」ダイアログではテーブルは選択せずに[閉じる]ボタンをクリックします。


  3. これによって空の状態のデザインビューとなります。


  4. リボンの[SQL]をクリックして画面をSQLビューに切り替えます。

      

    ここでひとつのステップが完了です。


  5. 上記の1の操作をもう一度行い、新たなクエリを作成します。今度は「テーブルの表示」ダイアログで任意のテーブルを選ぶなどして、本来作りたいクエリをデザインしていきます。


    ここでは、「商品マスタA」テーブルから各フィールドを選択し、「表示価格×1.08」の計算結果を「税込表示価格」とする演算を行ってみます。さらにクエリ上だけのフィールドとして「マスタ区分=”A”」というデータを作ります。また抽出条件で「表示価格>=1000」を設定します(もちろん他のテーブルを結合したりといったより複雑なものでもかまいません)。

    【デザインビュー】

    【データシートビューでの結果】


  6. データシートビューでの動作結果を確認して正しいクエリが作られていることを確認したら、画面をSQLビューに切り替えます。


  7. ここに表示されたすべてのSQL文の全体を範囲選択して、右クリックのメニューやCtrl+Cキーの操作でそれをクリップボードにコピーします。


  8. ここで、最初に作った空のクエリのSQLビューに移って、クリップボードにコピーしておいたSQL文全体をCtrl+Vキーなどの操作で貼り付けます。・・・・ここでSQLの終端を意味する末尾の「;(セミコロン)」は削除しておいた方が無難です


  9. 同様にして、ユニオンクエリに追加する別のクエリを作成します。これはデザインビューからSQL文をコピーするだけのものですので、5で作ったクエリのデザインビューの内容を変更する手順でもかまいません。
    ここでは、「商品マスタB」テーブルをベースに選択クエリを作ってみます。

    【デザインビュー】

    【データシートビューでの結果】


  10. 先ほどと同様にこのクエリのSQL文をコピーします。


  11. 最初に作ったクエリ(ユニオンクエリにしたいもの)のSQLビューに移って、まずはすでにあるSQL文の次の行にユニオンクエリのキーワードでもある「UNION(+改行)」という文字を書き込みます。


  12. さらに改行して、先ほどコピーした2つめのクエリのSQL文をそのまま貼り付けます。


  13. これを実行すると、下図のような結果となります。


  14. ユニオンクエリについては最後に名前を付けて保存します。デザイン作業だけに使ったクエリは動作にはまったく不要ですので、保存する必要はありません。

※並べ替え(ORDER BY句)などについては、各クエリの作り方によってはエラーとなる場合があります。複数のクエリを「UNION」でまとめたあと、それら全体に対して記述する必要があります。それについてはコピー&ペースだけでなくSQLビュー上での書き換えが必要となります。


関連Tips:
   「#507 ユニオンクエリの結果をテーブルにするには?」
   「#198 同じ構造の複数のテーブルを1つにまとめる方法」
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved