ACCESS クエリの抽出条件の書き方(基本編)
ACCESSの選択クエリでは、様々な抽出条件を設定してレコードを抽出できます。
これはACCESSの基礎的な利用方法ですが、慣れないと抽出条件の書き方に悩むものです。
そこで、今回はクエリの抽出条件の書き方について説明します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。
目次
クエリの抽出条件設定方法
まず、クエリの抽出条件の設定方法からです。
クエリを表示したうえで、表示メニューからデザインビューで開きます。
もしくは左側のナビゲーションウィンドウから該当のクエリを右クリックして、「デザインビュー」からも開くことができます。
クエリをデザインビューで開くと、下段(デザイングリッド)に抽出条件という行があります。
条件を設定したいフィールド(列)の抽出条件欄に条件式を記載することで抽出条件の設定が可能です。
例えば、商品名の条件で抽出したい場合は、商品名の列の抽出条件行に式を記入します。
例えばこんな感じです。
これが、基本的なクエリの抽出条件の設定方法です。
抽出条件のパターン
では、実際の抽出条件の書き方に入りましょう。
クエリの抽出条件の書き方には大きく分けて以下があります。
・完全一致
・部分一致
・範囲指定
・NOT(除外)
・OR(〇〇もしくは〇〇)
・AND(〇〇かつ〇〇)
以下でそれぞれの書き方を説明します。
サンプルデータ
今回はサンプルデータとして以下の商品テーブルを用意しました。
こちらに対して様々な条件でクエリによる抽出を行っていきましょう。
完全一致
最初は完全一致です。
これは、抽出条件と全く同じ値のレコードのみを抽出する方法です。
例えば、サンプルのテーブルから商品名が「ACCESS売上管理ツール作成」のレコードだけを抽出してみましょう。
クエリの抽出条件に以下のように設定します。
抽出条件にテキストを指定する際は「”」(ダブルクォーテーション)で前後を囲みます。
では、結果を見てみましょう。
このように、該当のレコードのみが抽出できました。
なお、数値の場合は「”」は不要です。
例えば、単価が20,000円のレコードのみを抽出する条件は以下になります。
結果を見ると、このように抽出できます。
このように、ACCESSでは抽出条件を記載する際にデータ型(テキスト、数値など)は非常に重要なので注意してください。
データ型について詳しくは以下の記事に書いてあります。
また、日付型のデータを抽出する際は前後を「#」で囲みます。
こちらも特殊なので以下の記事にまとめてあります。
以上が完全一致での抽出でした。
部分一致
続いて、部分一致です。
これは、抽出条件の一部が合致するレコードを抽出する方法です。
実務では部分一致を使うことが非常に多いでしょう。
例として、サンプルの商品テーブルから「オプション」という文字が入っているレコードのみを抽出してみましょう。
抽出条件は以下のように設定します。
Like “*オプション*”
部分一致をさせる場合は、「=」ではなく「Like」を使用します。
また、抽出するキーワードの前後に「*」(アスタリスク)を使用します。
アスタリスクはワイルドカードと言って、任意の文字を表しています。
ですので、この条件ですと前後に何らかの文字があっても、どこかに「オプション」という文字が入っているレコードが抽出されるのです。
結果がこちらです。
オプションという文字が入っているレコードが抽出されました。
なお、前方だけワイルドカードにする場合や後方だけワイルドカードにする方法もあります。
文字列の最初の数文字を固定で検索したい場合や、最後の数文字を固定で検索したい場合です。
例えば、上記の例ですと後方一致に条件を書き換えるとこうなります。
アスタリスクを文字の前だけにつけていますね。
この場合、最後が「オプション」で終わるレコードのみが抽出されます。
以上が部分一致での抽出でした。
範囲
続いて、数値などで範囲を指定して抽出する方法です。
サンプルデータで、単価が20,000円以上のレコードのみを抽出したい場合は、下記のように設定します。
>=20000
不等号で表現するだけですので感覚的に分かりやすいと思います。
忘れがちなのが、「=」を不等号の前と後ろのどちらにつけるか、ですね。
「=」は不等号の後なのでご注意ください。
結果を見てみましょう。
このように、単価が20,000円以上のレコードのみが抽出されました。
今回は〇〇以上という条件でしたが、もちろん〇〇以上、〇〇未満のような範囲指定もできます。
例えば、同じく単価が10,000円以上、20,000円未満の場合は下記の設定になります。
<20000 And >=10000
Andを使って複数の条件を接続する形です。
ここで注意してほしいのは、不等号はどちらの向きでも数値の前に来る、ということです。
20000< And >=10000
はNGですので注意してください。
以上が範囲指定でした。
Not(除外)
条件として、〇〇以外という指定をしたい場合があります。
こうした際に使用するのが、Notです。
サンプルとして商品名が「マニュアル作成オプション」以外のレコードを抽出してみましょう。
以下のように設定します。
Not “マニュアル作成オプション”
Not演算子の後に、対象のテキストを書いているだけですね。
結果を見てみましょう。
このように、「マニュアル作成オプション」以外のレコードが抽出できました。
しかし、実務ではこのようにテキストを完全一致で除外することは稀です。
むしろ、前述した部分一致を使うことの方が多いでしょう。
例えば、「追加」という文字を含まないレコードのみを抽出する場合は、以下の設定になります。
Not Like “*追加*”
このように、部分一致などを組み合わせて柔軟に活用しましょう。
ただし、Likeを使って部分一致で抽出すると、想定外のレコードもNot条件に含まれてしまう可能性があります。
抽出条件を設定した際は、必ず想定通りに抽出できているか、テストデータなどで検証しましょう。
Or(〇〇もしくは〇〇)
複数の条件を組み合わせて抽出したいという場合もあると思います。
その際、2つの条件が〇〇もしくは〇〇の場合に使用するのがOr演算子です。
例えば、単価が11,000円か20,000円のレコードのみを抽出してみましょう。
以下のように設定します。
11000 Or 20000
単純に数値をOrでつないだだけですね。
では結果を見てみましょう。
無事に対象のレコードのみが抽出されました。
もちろん、数値ではなくテキスト抽出の条件でOrを使うことも可能です。
例えば、商品名に「追加」を含むもしくは「ACCESS」で終わるレコードを抽出したい時の条件は以下になります。
Like “*追加*” Or Like “ACCESS*”
実はACCESSのクエリではOr演算子を使用せずに、〇〇もしくは〇〇の条件を作成できます。
一番左の抽出条件行の下に「または」と書いてあることにお気づきでしょうか?
実はクエリの抽出条件は複数の行に記載することが可能で、その場合の各行に記載した条件間の関係はOr条件になるのです。
上記の例でいえば、下記のように設定しても同じ結果が得られます。
And(〇〇かつ〇〇)
今度は逆に○○かつ○○、という場合です。
この場合はAnd演算子を使用します。
これは先ほどの例にも出しましたが、 単価が10,000円以上、20,000円未満のレコードを抽出する場合は下記の設定になります。
<20000 And >=10000
単純にAndを使って二つの式を接続するだけで実現可能です。
上記の例では、同じフィールド(この場合は単価)の中で条件を記載しました。
では、複数のフィールドにわたってAnd条件を設定したい場合はどうすればよいでしょうか。
その場合は、抽出条件の同じ行に条件を記載することで実現することができます。
例えば、商品名に「オプション」を含み、単価が10,000円以上のレコードを抽出する場合は以下の設定になります。
複数のフィールドの同じ抽出条件行に条件を記載することで、各条件をAndでつなぐことを表現できます。
結果を見てみましょう。
条件に合致したレコードのみが抽出されています。
ここで注意していただきたいのは、別の行に条件を記載すると、And条件ではなくOr条件になってしまうということです。
例えば、下記のように設定したとします。
この場合、
商品名 Like “*オプション*”
と
単価 >= 10000
はOr条件になってしまいます。
そのため、クエリの結果は
このように、想定したものと異なってしまいますので注意が必要です。
ACCESSの利用が高度になればなるほど、こうした複数条件での抽出のシーンも増えてきますので覚えておきましょう。
クエリの抽出条件でフォームを参照させる
最後に、クエリの抽出条件でフォームを参照させる方法です。
フォームの入力値に応じてクエリの抽出条件を動的に変化させることが可能ですので便利です。
こちらに記事をまとめましたのでご覧ください。
クエリを開くたびに抽出条件を設定する
また、クエリを開くたびに抽出条件を設定することも可能です。
こちらは、パラメータクエリという機能を利用します。
こんな感じで都度入力して抽出するのですが、詳しい内容は以下の記事にまとめてあります。
抽出条件のデータ型不一致
最後に、クエリの作成で最もよく発生するエラーについてご紹介します。
それはデータ型の不一致です。
「抽出条件でデータ型が一致しません」のエラーが出るのは、そのメッセージの通り、テーブルの該当フィールドに設定されたデータ型と、抽出条件に設定したデータ型が異なっており、抽出ができない場合です。
こちらの対処方法は以下の記事にまとめてあります。
以上、クエリの抽出条件の書き方についてご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。