AccessクエリとSQLの関係 抽出条件(または)

さて、Accessクエリの続きである。
今回は、前回に続いて、抽出条件である。
抽出条件のひとつ下に、「または」っていうのがある。以下、見出しに何も書かれていない入力欄が存在するが、こいつらの効果を調べるのである。
抽出条件または
さて、抽出条件の入力欄には、抽出条件の式を書くことができた。そのひとつ下にある「または」の部分にも抽出条件を書き込むことができる。
どちらかの抽出条件に合致するレコードが抽出されることになる。
以下のように、2と3を入力すると
b列が2であるレコード「または」b列が3であるレコードが抽出される。
Access抽出条件2または32017-05-29 (14).png
簡単にいえば、条件式を複数書くことができるわけです。
で、それらの条件式のうちどれかに合致すれば抽出対象となるわけです。
SQLとの対比 OR
では、これをSQLビューで表示させてみよう。
Access抽出条件OR2017-05-29 (14).png
これまた、括弧が多いので、取り除いてみると
WHERE foo.b = 2 OR foo.b = 3
となる。
foo.b = 2 が「b列が2であるレコード」という条件。
foo.b = 3 が「b列が3であるレコード」という条件。
これらのふたつの条件式が、OR(オア)でつながれている。
このORは、左右の条件式のうち、どちらか一方の条件が成り立っていれば、全体として真を戻す演算子。両方の条件が成り立っている場合でも真になる。唯一、偽となるのは、両方の条件が成り立っていない場合のみとなる。
ORは英語であるが、日本語に訳すと「または」である。
ここまでのまとめ
OR
 「または」に入力すると、ORで連結された条件式となる。
抽出条件にORを書く
またはの入力欄に条件式を書いたが、これをOrを使って、抽出条件のところにまとめて書いてもよい。
Access抽出条件にOrを書く2017-05-29 (17).png
実行結果やSQLは「または」に3を書いた場合と同じになるので、省略。
この方法なら、Or以外の論理演算子で条件を連結することも可能になる。
論理演算子には、以下のものが存在する(代表的なもののみ)。
論理演算子
 OR  または
 AND かつ
 IN  いずれか
ORについては、これまで見てきた通りであるが、AND(アンド)については少々説明が必要かも。
ANDもORと同様に、ふたつの条件式を連結するものである。ORが片方の条件式が成り立っていればよかったのに対して、ANDでは、両方の条件式が成り立っていなければ、全体で真にならない。
なので、「2 Or 3」をそのまま「2 And 3」としてもうまくいかないであろう。
どうしてかといえば、b列の値が2であり、かつ、同時にb列の値が3であるレコードなんて存在しないからである。
しかしながら、文法としては正しいので、Accessは律儀にそういったレコードを検索する。探しても存在しないはずなんだけどね。
ではANDの意味がないじゃない、と思われるかも知れない。
まぁ、ひとつの列の抽出条件に等価である条件同士でAND書いても「意味ない」です。
複数の列に抽出条件を書く
a列のところにも抽出条件を書いてみよう。
これで、SQLビューにしてみると
Access抽出条件AND2017-05-29 (18).png
ほほう。「a列が"二"」という条件と「b列が2」という条件のふたつがANDで連結されている。
これなら意味がある。どちらの条件も満たしているレコードが抽出されるのである。
ここまでのまとめ
AND
 デザインビューの各列に抽出条件を書くと、ANDで連結された条件式となる。
範囲指定の抽出条件
ひとつの列で抽出条件にANDを書いてもあまり意味がない、といったが、範囲指定で条件を書くときにはAndを使って書くことが多い。ANDを使って意味がないのは等しいかどうかの条件式を連結する場合である。
例えば、b列の値が、1~3の範囲にある、といった条件式なら以下のように書くことができる。
 >=1 And <=3   または  Between 1 And 3 今回はここまで。 詳しくは、SQLポケリのWHERE句や論理演算子のところを参照して欲しいのだ。

[改訂第4版]SQLポケットリファレンス

[改訂第4版]SQLポケットリファレンス

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/02/18
  • メディア: 単行本(ソフトカバー)

投稿者プロフィール

asai
asai