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

概要

この記事の結論
Accessのクエリでは、同じ「抽出条件」行の条件をすべて満たすAND条件と、「または」行へ分けるOR条件を使い分けます。まず「両方必要」か「どちらかでよい」かを文章で決めると、入力する位置を選びやすくなります。

この記事でわかること

  • AND条件で複数の条件を同時に満たす
  • OR条件でいずれかを満たす
  • ANDとORを混ぜるときは括弧でまとめる
  • 未入力の検索欄を条件なしとして扱う

この記事の主な内容

  1. 同じ条件行はANDで別の条件行はOR
  2. AND条件で複数の条件を同時に満たす
  3. OR条件でいずれかを満たす
  4. ANDとORを混ぜるときは括弧でまとめる
  5. 未入力の検索欄を条件なしとして扱う
  6. 真偽の組み合わせで結果を検証する
  7. よくある質問

想定読了時間:約7分


1 同じ条件行はANDで別の条件行はOR

Accessのクエリでは、同じ「抽出条件」行の条件をすべて満たすAND条件と、「または」行へ分けるOR条件を使い分けます。まず「両方必要」か「どちらかでよい」かを文章で決めると、入力する位置を選びやすくなります。

OR行を増やした際に共通条件を書き忘れると、意図しない行まで対象になります。複雑な条件はSQLビューでも確認しましょう。

ANDとORの違いについて、AND、ORの関係を示す図

2 AND条件で複数の条件を同時に満たす

M_顧客の都市が東京で、取引額が100000以上の行を探します。
都市列に “東京”、取引額列に >=100000 を同じ行へ置きます。どちらか片方しか満たさない行は取得されません。

設定例と確認点

都市取引額AND結果
東京120000対象
東京50000対象外
大阪120000対象外

サンプルコードと式

SELECT * FROM [M_顧客]
WHERE [都市]=”東京” AND [取引額]>=100000;

AND条件の例について、都市、取引額、結果の関係を示す図

3 OR条件でいずれかを満たす

都市が東京または大阪なら、同じ列へ “東京” Or “大阪” と書くか、条件行とまたは行に分けます。
候補が複数なら In (“東京”,”大阪”) の方が読みやすい場合があります。

OR条件の例について、候補1、候補2、結果の関係を示す図

数値型では In (1,3,5) のように書きます。
Not Inで除外する場合もNullは別の扱いであり、未入力を含めるなら明示的な条件が必要です。

共通条件を忘れないについて、東京の行、大阪の行の関係を示す図

4 ANDとORを混ぜるときは括弧でまとめる

東京または大阪で取引額100000以上なら、都市のORを括弧でまとめます。
括弧がない場合、ANDとORの優先順位により、東京の少額取引まで含む式になり得ます。

デザインビューでOR行を使うなら、共通の取引額条件を両方の行へ設定します。
1行だけに書くと、もう一方は金額制限なしになります。

設定例と確認点

条件行都市取引額
抽出条件“東京”>=100000
または“大阪”>=100000

サンプルコードと式

SELECT * FROM [M_顧客]
WHERE ([都市]=”東京” OR [都市]=”大阪”)
 AND [取引額]>=100000;


5 未入力の検索欄を条件なしとして扱う

検索フォームの任意項目は、未選択なら絞らない設計にできます。
数値型の顧客IDなら、
[顧客ID]=[Forms]![F_検索]![cbo顧客] Or [Forms]![F_検索]![cbo顧客] Is Null
のようにまとめます。

さらに別の任意条件をANDで加えるなら、各ORのまとまりを括弧で囲みます。
フォームが閉じている場合の参照や、空文字が入るテキスト欄も考慮してください。

任意検索の設計について、選択あり、未選択、追加条件の関係を示す図

既存Accessへの影響を判断できない場合

本記事の手順をコピーしたファイルで試しても解決しない場合や、既存データ・他の画面への影響を判断できない場合は、お気軽にご相談ください。対象ファイル、操作手順、期待する結果を整理すると、調査や改修の範囲を相談しやすくなります。


6 真偽の組み合わせで結果を検証する

条件A・Bについて、両方一致、Aだけ一致、Bだけ一致、どちらも不一致の4ケースを用意します。
Nullや境界値も加えると、見た目では気付きにくい条件漏れを発見できます。

条件が増えるほどSQLを短くすることより、意味を追えることが大切です。
共通条件を別クエリへ分ける方法もありますが、元クエリ側に条件が残っていることを忘れないように名前と説明を付けます。

組み合わせ試験について、両方一致、Aだけ、Bだけ、両方不一致の関係を示す図

7 よくある質問

同じ行はAND、別の条件行はORです。

括弧とOR行の共通条件を確認します。

できます。Nullなら絞らない条件を、ほかの条件と括弧で組み合わせます。

まとめ

条件が増えるほどSQLを短くすることより、意味を追えることが大切です。
共通条件を別クエリへ分ける方法もありますが、元クエリ側に条件が残っていることを忘れないように名前と説明を付けます。

本記事の手順をコピーしたファイルで試しても解決しない場合や、既存データ・他の画面への影響を判断できない場合は、お気軽にご相談ください。対象ファイル、操作手順、期待する結果を整理すると、調査や改修の範囲を相談しやすくなります。


参考情報

Microsoft公式資料を参照しています。サンプルは説明用の架空データです。Windows版Accessの実機検証は未実施のため、適用前に対象環境のコピーで結果を確認してください。

Microsoft:抽出条件の例
https://support.microsoft.com/en-us/access/examples-of-query-criteria

Microsoft:WHERE句
https://learn.microsoft.com/en-us/office/vba/access/concepts/structured-query-language/where-clause-microsoft-access-sql

TOP