PR

Accessクエリ入門|複数テーブルを使って効率よくデータを取り出す方法

Access

こんにちは、Accessブロガーのなかぜんです。

「Accessで複数のテーブルを使って、欲しい情報だけ取り出したいけど、うまくクエリを組めない…」

そんな悩み、ありませんか?

実は、Accessではリレーションシップをうまく活用すれば、複数のテーブルを組み合わせてスマートにデータを抽出することができます。今回は、初心者〜中級者向けに「複数テーブルを使ったクエリの作成方法」をわかりやすく解説します!


1. クエリとは?複数テーブルを使うメリット

■ クエリとは

クエリとは、テーブルの中から条件に合ったデータだけを取り出すための「質問文」のようなものです。

■ 複数テーブルを使う理由

たとえば「顧客テーブル」と「注文テーブル」がある場合、顧客名ごとの注文内容を一覧で見たい時には、両方のテーブルを使ったクエリが必要になります。


2. 複数テーブルクエリの作り方

■ 使用例:顧客と注文テーブルの結合

以下のようなテーブルを例に説明します:

  • 顧客テーブル(Customers):CustomerID、CustomerName
  • 注文テーブル(Orders):OrderID、CustomerID、OrderDate、Amount

■ ステップバイステップで作成

  1. Accessで「クエリデザイン」を選択
  2. 「Customers」と「Orders」テーブルを追加
  3. 自動的に「CustomerID」でリレーションシップが結ばれる
  4. 以下のフィールドをクエリに追加:
    ・Customers.CustomerName
    ・Orders.OrderDate
    ・Orders.Amount
  5. 表示してみると、顧客名ごとの注文履歴が一覧に!

■ SQLビューで確認するとこうなります:


SELECT Customers.CustomerName, Orders.OrderDate, Orders.Amount
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

※INNER JOINは、両テーブルに一致するデータだけを取得する結合方法です。


3. よくあるミス&注意点

  • リレーションが正しく結ばれていない
    → クエリに正しいデータが出てこない原因になります。
    Accessの「リレーションシップ」画面で確認しましょう。
  • 重複フィールド名の曖昧さ
    → 複数テーブルに同じフィールド名(例:ID)があると、指定が曖昧になります。
    「テーブル名.フィールド名」で明示するクセをつけましょう。

4. 応用ポイント:LEFT JOINで空欄データも拾う

INNER JOINでは、両方にデータがあるものだけを抽出しますが、LEFT JOINを使えば、片方(主テーブル)にだけデータがあるものも拾えます。


SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

これにより「注文がない顧客」も一覧に表示できるので、未購入ユーザーの把握にも使えます。


5. まとめ|複数テーブルクエリで業務をもっと効率化

今回は、Accessで複数テーブルを使ったクエリの作成方法を解説しました。

  • クエリはテーブルから必要な情報だけを取り出す便利な仕組み
  • リレーションシップが正しければ、複数テーブルも簡単に扱える
  • INNER JOINとLEFT JOINを使い分ければ、業務の幅が広がる!

「やってみたら意外と簡単だった!」という声も多いので、ぜひあなたもチャレンジしてみてくださいね。