Access Tips by pPoy

  
トップへ←Top    QueryへQuery  FormへForm  ReportへReport  Module(Sub)へSub  Module(Function)へFunction  ExcelへExcel  Etc.へEtc.  Word連携へWord

Query 同一構造のテーブル・クエリを一つにまとめて表示するクエリ
《ユニオンクエリ》(Ac97,Ac2000,Ac2002)
テーブルが年度別に分かれているデータを同時に処理したい場合があります。

取り敢えず空のテーブルを作り、それに追加クエリでどんどん追加して行ってもできます。
但し、それではデータ量が倍に肥大し、元のデータ量が多かったときなど大変なことになります。

以下は、テーブルのデータには手をつけず、クエリのみでまとめる方法です。

テーブルの構造が全く同じことが条件です。 (テーブルでは無くクエリの場合でも同様です。)
これには、ユニオンクエリを使用します。
「TD_成績2003」 は、集計データの格納されているデータテーブルです。

元データ

  テーブルには全部で11件のデータがあります。

  これと全く同じ構造の 「TD_成績2002」
  という名前のテーブルがあります。
  こちらには全部で10件のデータがあります。

  この2つのテーブルをまとめて表示します。

ユニオンクエリは、クエリグリッドからは作成できません。
面倒でも直接 SQL ビューで 入力する必要があります。

まず、新規に空のクエリを作成します。
クエリのデザイン画面を開いて、テーブルを追加せずに閉じます。
その状態で、ツールバーの  「SQL ビュー」 を押してください。

そこには、「SELECT;」 の文字が表示されています。 最後のセミコロンを消し、
以下の文を入力してください。
   SELECT * from TD_成績2002
   UNION select  * from TD_成績2003;
SQL ビュー

Access では大文字小文字に意味はありません。 
また改行位置は単語の前後ならどこでもOKです。 但し、上下に並んでいた方が見やすいです。
そのままツールバーの 「」 (実行) ボタンを押して実行してみてください。

実行結果

  無事に両方のテーブルのデータが表示されます。

  両方のテーブルのデータがまとまった結果、
  全部で21件のデータが表示されています。

  このときフィールド名には、最初に記述された
  テーブルのものが使用されます。
≪注意≫
  • ユニオンクエリはそれなりのマシンスペックを必要とします。
    非力なマシンでユニオンクエリを複数組み合わせると、処理が非常に遅くなります。
    そのような場合は、ワークテーブルを利用したほうが処理が速いです。

  • ユニオンクエリでは、特に指定しない場合、重複したデータは排除されます。
    両方のテーブルの全てのデータを表示したい場合は、以下のように記述します。
       SELECT * from TD_成績2002
       UNION ALL select  * from TD_成績2003;
    ALL 述語を入れることによって、重複分を含めて全てのデータが返されます。
    また、 ALL を入れた方がクエリの実行速度が速くなります。

  • 異なった構造のテーブルを、一つにまとめて表示する方法 (ユニオンクエリ) は こちら です。




この頁のTOPへTop

【念の為の注意書きです。】
このページ(下位ページ含む)の全ての物の無断転載を禁止いたします。又、当ページ(下位ページ含む)に記載されていることは、全て自己の責任において実行してください。

☆ 感想をお知らせください (直接ブラウザから送信致します。メールアカウントは不要です。)
  form mail はこちら

Copyright(C) pPoy 2004