こんにちは、Accessブロガーのなかぜんです。
「Accessで複数のテーブルを使って、欲しい情報だけ取り出したいけど、うまくクエリを組めない…」
そんな悩み、ありませんか?
実は、Accessではリレーションシップをうまく活用すれば、複数のテーブルを組み合わせてスマートにデータを抽出することができます。今回は、初心者〜中級者向けに「複数テーブルを使ったクエリの作成方法」をわかりやすく解説します!
1. クエリとは?複数テーブルを使うメリット
■ クエリとは
クエリとは、テーブルの中から条件に合ったデータだけを取り出すための「質問文」のようなものです。
■ 複数テーブルを使う理由
たとえば「顧客テーブル」と「注文テーブル」がある場合、顧客名ごとの注文内容を一覧で見たい時には、両方のテーブルを使ったクエリが必要になります。
2. 複数テーブルクエリの作り方
■ 使用例:顧客と注文テーブルの結合
以下のようなテーブルを例に説明します:
- 顧客テーブル(Customers):CustomerID、CustomerName
- 注文テーブル(Orders):OrderID、CustomerID、OrderDate、Amount
■ ステップバイステップで作成
- Accessで「クエリデザイン」を選択
- 「Customers」と「Orders」テーブルを追加
- 自動的に「CustomerID」でリレーションシップが結ばれる
- 以下のフィールドをクエリに追加:
・Customers.CustomerName
・Orders.OrderDate
・Orders.Amount - 表示してみると、顧客名ごとの注文履歴が一覧に!
■ 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を使い分ければ、業務の幅が広がる!
「やってみたら意外と簡単だった!」という声も多いので、ぜひあなたもチャレンジしてみてくださいね。
¥2,420 (2025/04/22 12:33:54時点 | 楽天市場調べ)
