Accessのユニオンクエリの作り方をお探しですね。

広告

Accessで複数のテーブルを一つにまとめる「ユニオンクエリ」を使ってみよう

Accessでデータベースを使っていると、「去年のデータと今年のデータが別々のテーブルになってて、まとめて見たいんだけどな…」とか、「各店舗から送られてきたデータを一つにできないかな」って困ること、ありませんか?

そんなときに役立つのが「ユニオンクエリ」という機能です。

この記事では、複数のテーブルをパパッと一つにまとめる方法を、SQLが苦手な人でもわかるように説明していきます。

データをまとめる作業がぐっとラクになるので、ぜひ参考にしてみてください。

ユニオンクエリって何?データを「縦に積み上げる」便利な機能

Accessには、複数のテーブルをくっつける機能がいくつかあります。

その中でもユニオンクエリは、**データを縦に積み上げるように結合できる**のが特徴です。

普通のクエリ(選択クエリ)は、社員テーブルと部署テーブルを社員IDでつなげるような「横の結合」をしますよね。

でもユニオンクエリは、同じような形をしたテーブル同士のデータ(行)を上から下へ積み重ねていく「縦の結合」なんです。

複数のテーブルのデータを一つの大きなかたまりとして扱いたいときに、すごく便利なんですよ。

実際の仕事では、こんな場面で活躍します。

– 年度ごとに分かれている売上データを、過去分も含めて全部まとめて見たい
– 複数の支店から送られてきた顧客リストを、一つのテーブルみたいに扱いたい
– 本番データとテストデータを一時的に合わせて集計したい

ユニオンクエリを使えば、わざわざ新しいテーブルを作ってコピペする手間がいりません。

データは元のテーブルに残したまま、クエリを開いたときだけ一つのテーブルのように見せられるので、データベースの容量も無駄に使わずに済むんです。

ユニオンクエリの作り方・基本の書き方

ユニオンクエリを作るときは、普通のクエリみたいにデザイン画面でマウスをポチポチして作ることができません。

「SQL」っていうデータベース用の言葉を直接入力する必要があります。

でも、書き方のルールさえ覚えちゃえば全然難しくないので、一緒に見ていきましょう。

**作り方の手順**

1. 「作成」タブから「クエリデザイン」をクリック
2. 「テーブルの表示」って画面が出てきたら、何も選ばずに閉じる
3. 「ユニオン」ボタンをクリックしてSQLビューに切り替える
4. 真っ白な画面にSQL文を書いて、「実行」ボタンを押す

基本的な書き方は、「SELECT * FROM テーブル名」っていう文を「UNION」でつなげるだけです。

例えば、「2022年売上」テーブルと「2023年売上」テーブルのデータを全部くっつけたいときは、こう書きます。

“`

SELECT * FROM 2022年売上
UNION
SELECT * FROM 2023年売上;

“`

「*」は「全部の列を取ってくる」って意味で、最後の「;」をつけるのがAccessのお約束です。

特定の列だけを使いたいときは、「*」の代わりに列の名前を書きます。

“`

SELECT 顧客名, 売上金額 FROM 2022年売上
UNION
SELECT 顧客名, 売上金額 FROM 2023年売上;

“`

このとき、結果に表示される列の見出しは、最初のSELECT文で指定した名前になります。

列の名前を変えたいときは、「AS」を使って「SELECT 氏名 AS 顧客名 FROM テーブル1」みたいに書けばOKです。

「UNION」と「UNION ALL」はどう違う?使い分けのコツ

ユニオンクエリには、「UNION」と「UNION ALL」の2種類があります。

名前は似てますが、重複するデータの扱い方が全然違うので、目的に合わせて使い分けましょう。

**UNION**を使うと、重複するデータは自動的に1つにまとめられます。

例えば、テーブルAとテーブルBに全く同じ顧客データがあったら、結果には1件だけ表示されます。

重複のないスッキリしたリストを作りたいときは便利ですが、裏でチェック処理をしているので、データが多いと時間がかかります。

**UNION ALL**を使うと、重複チェックをせずに全部のデータをそのまま積み上げます。

さっきの例だと、同じ顧客データが2件とも表示されます。

売上明細みたいに、同じ内容でも1件1件に意味があるデータをそのまま集計したいときは、こっちを使います。

チェックしない分、処理がすごく速いのもメリットです。

**使い分けのポイント**

普段は「UNION ALL」を使うのがおすすめです。

処理が速いし、データをそのまま合計したいケースが多いからです。

「絶対に重複を消したい!」っていう明確な理由があるときだけ「UNION」を使うようにすると、データベースの動きが重くならずに済みますよ。

よくあるエラーと解決方法

ユニオンクエリはすごく便利ですが、いくつかルールがあるので、最初はエラーが出て「あれ?」ってなることもあります。

SQLの入力に慣れてないと、エラーメッセージを見てもよくわからなくて困っちゃいますよね。

ここでは、よくあるエラーと解決方法を紹介します。

**よくあるエラーの原因**

– 結合しようとしているテーブルの「列の数」が合ってない
– 同じ位置の列で「データ型」(数値とかテキストとか)が違う
– テーブル名や列名の入力ミス、スペースの入れ忘れ

**一番多いのが列の数の不一致**です。

ユニオンクエリは複数のテーブルをきれいに並べるので、1つ目のテーブルで3つの列を取ってきたら、2つ目のテーブルも必ず3つの列を取ってこないといけません。

元のテーブルの列数が違うときは、「SELECT *」じゃなくて必要な列だけを指定して数を合わせるか、足りない列には「Null AS 備考」みたいにダミーの列を追加して調整しましょう。

**データ型の不一致**にも注意が必要です。

例えば、1列目がテーブルAでは「数値型」なのに、テーブルBでは「テキスト型」だと、Accessがうまく結合できずにエラーになります。

こんなときは、元のテーブルのデザインを見直してデータ型を揃えるか、型を変換する処理を入れる必要があります。

これらのルールさえ守れば、追加クエリではうまくいかないような場面でも、ユニオンクエリなら柔軟にデータをまとめられます。

ちょっと慣れが必要ですが、使えるようになるとすごく便利なので、ぜひチャレンジしてみてください!

広告