Access クエリの作成方法 抽出条件 並べ替え 結合を初心者向けに解説

概要

この記事の結論
Accessの選択クエリは、[作成]→[クエリデザイン]で元テーブルを追加し、表示するフィールド、抽出条件、並び順を設定して作ります。データシートビューで結果を確認し、名前を付けて保存すれば同じ処理を再利用できます。

この記事でわかること

  • 最初はコピーで選択クエリを作成
  • 同じ条件行はAND 別の行はOR
  • 月間抽出は翌月初日未満で指定
  • 結合後は件数と合計を照合

この記事の主な内容

  1. 選択クエリの役割と安全な練習方法
  2. クエリデザインで最初の一覧を作る
  3. 抽出条件と並べ替えを設定する
  4. 計算列とパラメーターを追加する
  5. 複数テーブルを正しく結合する
  6. エラーを切り分け再利用しやすく保存する
  7. まとめ
  8. よくある質問

想定読了時間:約12分~16分


選択クエリの役割と安全な練習方法

選択クエリは、テーブルの中から必要な項目とレコードを取り出し、並べ替えや計算をして表示するために使います。最初は1つのテーブルを元にして作り、期待した行が出ることを確認してから条件や結合を増やすと理解しやすくなります。

保存したクエリは、通常はデータのコピーではなく処理の定義です。元テーブルの内容が変われば、再実行した結果も変わります。毎月同じ条件で一覧を出す、レポートやグラフに同じ抽出結果を使う、といった用途に向いています。[S4]

選択と更新を区別する

種類・機能役割実行時の注意
選択クエリ抽出、並べ替え、計算結果を見るだけでは元データを変更しない
集計・不一致合計や存在差を表示選択処理の用途として理解する
クロス集計行と列に分けて集計列の変化と利用先を確認
更新・追加・削除・テーブル作成データや保存先を変更バックアップと対象確認が必要
ユニオン同じ構成の結果を縦につなぐ列の順序と型をそろえる

ここでは選択クエリを扱います。ただし、更新可能な選択クエリの結果画面で値を直接編集すると、元テーブルへ反映されます。「選択クエリだから何をしても安全」と考えず、練習用ファイルで操作してください。[S5]

Accessの選択クエリとアクションクエリの違いを説明する図

サンプルテーブルを作る

T_売上に、売上ID(数値型・長整数、主キー)、売上日(日付/時刻型)、顧客ID(短いテキスト)、支店(短いテキスト)、数量(数値型・長整数)、単価(通貨型)を作ります。以下は説明用の架空データです。

売上ID売上日顧客ID支店数量単価
12026/09/01C01東京25000
22026/09/10C02大阪35000
32026/09/30 15:30C01東京45000
42026/10/01C03東京15000

最初はこの4行をすべて表示し、次に東京だけを表示します。東京はID1・3・4の3行です。9月の東京に限定するとID1・3の2行になります。正しい結果を先に控えておきましょう。


クエリデザインで最初の一覧を作る

クエリデザインでは、上段で元になるテーブルを選び、下段で表示項目や条件を指定します。SQLを直接書かなくても、基本的な選択クエリを作成できます。[S1]

Accessのクエリ作成の5ステップを説明する図

5ステップで作成する

1. [作成]→[クエリデザイン]を選びます。
2. [テーブルの追加]などの一覧からT_売上を追加します。版によってダイアログやペインの表示が異なります。
3. 上段の売上ID、売上日、顧客ID、支店、数量、単価を順にダブルクリックし、下段のグリッドへ追加します。
4. [表示]→[データシートビュー]へ切り替え、4行が表示されることを確認します。
5. Ctrl+SでQ_売上一覧と名前を付けて保存します。閉じた後、ナビゲーションウィンドウから再度開けるか確認します。

[実行]ボタンでも選択クエリの結果を表示できます。ただし、後でアクションクエリへ切り替えた場合は、実行によってデータが変更されます。実行前にクエリの種類を確認する習慣を付けましょう。

デザイングリッドの読み方

行指定する内容例
フィールド表示・計算・条件に使う列売上日、支店
テーブル列の取得元T_売上
並べ替え昇順・降順売上日を昇順
表示結果に列を出すか条件だけに使う列は非表示も可能
抽出条件満たすべき条件支店に「東京」
または別の条件の組み合わせ支店に「大阪」

表示チェックを外しても、その列の条件は適用できます。たとえば支店で東京だけに絞りながら、結果一覧には支店列を出さない設定ができます。条件が効かないときは、表示チェックではなく条件の式や行を確認してください。

Accessのデザイングリッドの役割を説明する図

抽出条件と並べ替えを設定する

抽出条件はデータ型に合わせて書きます。文字列は引用符、日付は日付の値や関数、NullはIs Nullを使います。まず1つの条件で試し、結果を確認してから複数条件を組み合わせましょう。[S2]

基本条件の例

目的対象列デザイングリッドの条件例
東京だけ支店“東京”
数量が3以上数量>=3
C01とC02顧客IDIn (“C01″,”C02”)
未入力顧客IDIs Null
前方一致顧客IDLike “C*”

Likeの「*」は一般的なANSI-89設定のAccessデータベースで使う例です。ANSI-92設定では「%」など記号が異なります。パターン検索だけ結果が合わない場合は、使用するデータベースの設定も確認してください。

同じ行はAND 別の行はOR

支店の抽出条件行に「東京」、数量の同じ行に「>=3」を置くと、「東京かつ数量3以上」となり、サンプルではID3だけが返ります。一方、支店の抽出条件行に「東京」、または行に「大阪」と置くと両方の支店を表示します。

「9月の東京または大阪」を出す場合、日付条件を片方の行にしか書かないと、もう片方には期間条件が掛からない組み合わせになります。同じ期間条件を各行に入れるか、支店列をInで指定して1行にまとめると分かりやすくなります。

AccessのAND条件とOR条件の違いを説明する図

時刻付きの日付は範囲で絞る

9月全体を取り出す条件は、売上日列へ >=DateSerial(2026,9,1) And <DateSerial(2026,10,1) と入力します。月末日までの条件を日付だけで指定すると、9月30日15:30のような時刻付きレコードを取りこぼすことがあります。

SQLビューで見ると、次の形になります。結果はID1・3の2行です。ORDER BYでは売上日、売上IDの順に並べます。同じ日時の行も一定の順にするなら、主キーなどを最後の並び順に加えておきます。

SELECT [売上ID], [売上日], [顧客ID], [支店]
FROM [T_売上]
WHERE [支店] = ‘東京’
  AND [売上日] >= DateSerial(2026,9,1)
  AND [売上日] < DateSerial(2026,10,1)
ORDER BY [売上日], [売上ID];

Accessの月末の時刻を含める日付条件を説明する図

計算列とパラメーターを追加する

計算列を使うと、テーブルに保存していない値をクエリで求められます。たとえば数量と単価から売上金額を表示できます。ただし、税・値引き・端数処理などを含む実際の金額は、業務の計算ルールを別途確認してください。

数量と単価から金額を作る

空いている列のフィールド行に「売上金額: [数量]*[単価]」と入力します。コロンの前が結果の列名、後ろが計算式です。全4行なら10,000円、15,000円、20,000円、5,000円が期待結果になります。

数量または単価がNullなら、積もNullになります。欠損をゼロ扱いするかエラーとして止めるかは業務判断です。空欄をなくすためだけにNzを付けると、単価の未登録を0円として見逃すことがあります。

入力した期間を使う

毎回同じクエリで期間を変えたいときはパラメーターを使えます。SQLの先頭で型を宣言すると、日付を文字列として扱うなどの誤りを減らせます。次の例は、開始日と終了日をどちらも午前0時の日付として入力する前提です。

PARAMETERS [開始日を入力] DateTime,
           [終了日を入力] DateTime;
SELECT [売上ID], [売上日], [顧客ID],
       [数量]*[単価] AS [売上金額]
FROM [T_売上]
WHERE [売上日] >= [開始日を入力]
  AND [売上日] < DateAdd(‘d’,1,[終了日を入力])
ORDER BY [売上日], [売上ID];

開始日に2026/09/01、終了日に2026/09/30を入力するとID1〜3の3行です。終了日の翌日未満にするため、月末の時刻付き売上も含まれます。開始日が終了日より後なら結果が出ないので、運用時は入力フォームで前後関係を確認すると親切です。

意図しない入力画面には注意

パラメーターを設定した覚えがないのに値の入力を求められる場合は、列名や式の誤記が疑われます。売上金額と売上額の取り違え、削除されたフィールド、開いていないフォームへの参照などを確認しましょう。適当な数値を入れて進めると原因が分からなくなります。


複数テーブルを正しく結合する

顧客名を表示するために顧客マスタを結合する場合、顧客IDで対応付けます。結合は、異なるテーブルのどの行とどの行を組み合わせるかという指定です。データベース全体のリレーションシップと、個々のクエリの結合条件は役割を区別してください。[S3]

顧客名を付ける例

M_顧客に顧客ID(短いテキスト、主キー)と顧客名(短いテキスト)を作り、C01=青山商店、C02=中央販売を登録します。C03はあえて未登録とし、結合の違いを確認します。

SELECT S.[売上ID], S.[顧客ID], M.[顧客名],
       S.[数量]*S.[単価] AS [売上金額]
FROM [T_売上] AS S
LEFT JOIN [M_顧客] AS M
ON S.[顧客ID] = M.[顧客ID]
ORDER BY S.[売上ID];

LEFT JOINでは売上側の4行が残り、C03の顧客名はNullになります。INNER JOINへ変えると、マスタにないC03の売上は結果から外れ、3行になります。どちらが正しいかは「売上をすべて出すのか、一致した顧客だけか」という目的で決まります。

行が増えるときは一意性を確認する

顧客マスタに同じIDが2行あれば、対応する売上は2回ずつ表示されます。複数テーブルを追加して結合線を設定しない場合には、全組み合わせが生じることもあります。2行と3行なら6行になるため、想定より件数が多いときは結合を確認します。

重複に見えるからといって、表示上の重複除去だけで解決しないでください。別の明細として正しい複数行か、マスタ重複や結合条件漏れなのかを判断します。特に合計金額を出す前には、売上IDと件数を照合することが重要です。

Accessの結合でレコードが増える理由を説明する図

条件を追加するたびに結果が変わり、既存クエリの関係を追えない場合は、元テーブル、結合キー、期待する一覧を整理しましょう。Accessの教科書では、引き継いだAccessの抽出・集計処理の調査や改修を支援しています。


エラーを切り分け再利用しやすく保存する

クエリが動かないときは、小さな状態へ戻して原因を絞ります。元クエリはコピーして保存し、条件を一つずつ外す、テーブルを一つにする、計算列を外す、という順で違いを確認してください。

症状確認事項修正の方向
0件になる条件と元データ条件を1つずつ確認
パラメーター入力が出る列名・フォーム参照誤記や参照切れを修正
データ型が一致しない数値・文字列・日付テーブル定義と条件を合わせる
同じ行が何度も出る結合キーと一意性重複や多対多の関係を確認
更新できない集計・結合・権限など更新が必要か、元フォームで行うかを判断
以前より遅いデータ量・条件・索引処理を段階に分けて時間を確認

保存名と利用先を記録する

Q_売上一覧、Q_売上_対象期間、Q_顧客別売上のように役割を表す名前を付けると管理しやすくなります。既存クエリを改名・削除すると、それを使うフォームやレポートが動かなくなることがあります。利用先を確認してから変更します。

条件付きのクエリを帳票の元にする場合は、何月・どの支店・どの状態が対象かを説明できるように残します。一時的な画面フィルターだけに依存すると、別の利用者が再現しにくくなります。保存した条件と並び順で再実行できるか確認してください。

仕上げの確認

1. 想定したIDと件数になっているか確認します。
2. 期間の初日・月末の時刻・翌月初日の扱いを確かめます。
3. Null、マスタ未登録、重複キーを含む場合の結果を見ます。
4. 閉じて開き直し、条件・並び順・列名が保持されるか確認します。
5. 利用するフォーム、レポート、グラフへの影響を確認します。

Accessのクエリエラーの確認順序を説明する図

まとめ

選択クエリは、元テーブルと表示項目を選び、条件と並び順を追加して作成します。最初の4行から、東京3行、9月の東京2行へと段階的に絞ると、各設定の意味が分かります。複数テーブルを使うときは、件数と結合キーまで確認して仕上げましょう。

よくある質問

基本的な選択クエリはデザインビューで作れます。SQLビューも併せて確認すると、条件や結合が何をしているか理解しやすくなります。

通常の選択クエリは問い合わせの定義を保存します。再実行時の元データによって結果が変わります。テーブル作成クエリとは区別してください。

選択クエリの結果を見るだけでは通常変更されません。ただし更新可能な結果画面で直接編集すれば元データへ反映されます。アクションクエリも別扱いです。

同じ条件行の複数列はAND、別の条件行との関係はORです。各行を一つの条件セットとして読むと理解しやすくなります。

日付に時刻が含まれている可能性があります。開始日以上かつ翌月初日未満という条件なら、月末日の時刻付きレコードも含められます。

列名の誤記、改名された列、開いていないフォームへの参照などが候補です。設定したパラメーターなのか、参照不明による要求なのかを確認します。

結合先に同じキーが複数あるか、結合条件が足りない可能性があります。表示上の重複を消す前に、1行の単位とキーを確認します。

レコードソースとして指定できます。列名や抽出条件を後から変更すると利用先へ影響するため、依存するフォームやレポートも一緒に確認します。

Accessクエリの抽出条件と結合を相談する

本文の確認手順を試しても原因を絞れない場合は、元データの定義、使っているクエリ、期待する結果、実際の症状を整理してご相談ください。Accessの教科書では既存Accessの調査・保守・改修を支援しています。


参考情報

[S1] Microsoft 簡単な選択クエリを作成する
https://support.microsoft.com/ja-jp/access/create-a-simple-select-query

[S2] Microsoft クエリの抽出条件の例
https://support.microsoft.com/ja-jp/access/examples-of-query-criteria

[S3] Microsoft 複数のテーブルを基にクエリを作成する
https://support.microsoft.com/ja-jp/access/create-a-query-based-on-multiple-tables

[S4] Microsoft クエリの概要
https://support.microsoft.com/ja-jp/access/introduction-to-queries

[S5] Microsoft クエリを実行する
https://support.microsoft.com/ja-jp/access/run-a-query

関連記事

Accessのクエリとは?種類・抽出条件・作り方を解説|Accessの教科書

Accessのテーブルとは?作り方・フィールド・主キーを解説|Accessの教科書

Accessクエリの抽出条件に日付を指定する方法

Accessクエリの抽出条件を複数設定する方法|Accessの教科書

Access追加クエリの作成方法と重複登録を防ぐ手順

Access 不一致クエリで差分を求める方法と失敗しない確認手順

TOP