4/13/2017

Access。クエリで範囲外のデータを抽出する方法とある一致するデータだけを抽出方法【Not Between And】

Access。クエリで範囲外のデータを抽出する方法とある一致するデータだけを抽出方法

<Access Not Between And>


クエリを使った抽出方法は様々あるのですが、
ちょこっとしたことをしているだけで、
抽出するのが楽になるものも結構あります。

今回は、簡単なんだけど、あまりテキストや書籍で紹介されていない、
範囲外』のデータを抽出する場合をご紹介していきます。

まず、次のように抽出されたクエリがあります。

この数量というフィールドのデータから、
「80~100のものを抽出してください」としたら、
Between and
を使うと抽出することが出来ますよね。

念のために確認してみましょう。

デザインビューにして、数量のフィールドの抽出条件に、
Between 80 And 100
と設定すれば、数量が80~100までのデータが抽出されます。

このBetween Andは、基本的な抽出方法ですので、
抑えて置きたいところですね。

ただ、ポイントなのは、Betweenという単語。

これは、どうしても基本的に「自力で入力」するしかありませんので、
英単語が苦手な方も、覚える必要があります。

さて、ここからが本題。

数量が80~100
ではなくて、
数量が80~100以外
だったら、どうしたらいいでしょうか?

Between 0 And 79 Or Between 101 And ∞
なんてことは出来ませんね。
∞(無限大)という表現はありませんし。

以外というのを表現するには、
Not Between And」を使うことで表現することが出来ます。

【範囲外は、Not Between and で解決】

では、抽出条件を
Not (Between 80 And 100)
と修正しましょう。

では、抽出の結果を確認してみましょう。

数量が80~100以外のデータを抽出することが出来ましたね。

このように、『範囲外』で抽出したい時は、
Not (Between And )
で、抽出することが出来ます。

【INでコレとコレとコレで抽出】

では、範囲内・範囲外ではなくて、
数量が20と35と60のデータという場合はどのようにしたら、
効率よく抽出することができるのでしょうか?

Between And は、範囲を抽出しますが、
ダイレクトで、コレとコレとコレということには使えません。

そこで、Inを使うことによって、
一致するデータのみを抽出することが出来ます。

では、早速やってみましょう。

数量の抽出条件を
In (20,35,60)
と設定してみましょう。

抽出結果は、

このように注することが出来ましたね。

実は、このように抽出条件を設定しても、同じように抽出することが出来ます。

抽出条件を 『または』 で設定するのも、いいのですが、
『または』が多いとわかりにくいように感じますし、
それだけなく、SQLで見てみると、
Inを使う構文のほうが短くなりますので、
処理時間を考えると、Inを使うほうがいいように感じます。

Inを使用した場合のSQLビュー
SELECT T売上一覧.日付, T商品一覧.商品名, T商品一覧.単価, T売上一覧.数量
FROM T商品一覧 INNER JOIN T売上一覧 ON T商品一覧.商品ID = T売上一覧.商品ID
WHERE (((T売上一覧.数量) In (20,35,60)));

Inを使用しない場合のSQLビュー
SELECT T売上一覧.日付, T商品一覧.商品名, T商品一覧.単価, T売上一覧.数量
FROM T商品一覧 INNER JOIN T売上一覧 ON T商品一覧.商品ID = T売上一覧.商品ID
WHERE (((T売上一覧.数量)=20)) OR (((T売上一覧.数量)=35)) OR (((T売上一覧.数量)=60));