SSブログ

クエリ 基本的な作り方・その2 クエリデザインで選択クエリに抽出条件を設定する [クエリ]

 その1で簡単な選択クエリを作りましたので、今回は条件抽出について説明します。

 クエリデザインで抽出条件を設定する場合は、画面下の「抽出条件:」と表示されている行を使用します。

○ 比較演算子による条件抽出

 例えば、「担当」項目の内容が、「1」のレコードを抽出する場合は、次のように設定します。

 「担当」項目の列で、「抽出条件」の行のセルに、「1」を入力します。
 (「=1」でも可。イコールは省略してよいみたいです。)
 画面左上の「実行」アイコンをクリックして、クエリを実行してみます。

 結果はこのように、「担当」が「1」のレコードのみとなりました。

 上記の例は、等号(イコール)による比較を行いました。
 その他にも、下記の比較演算子による比較が行えます。
= (等しい)
<> (等しくない)
> (右辺より大きい)
< (右辺より小さい)
>= (右辺以上)
<= (右辺以下)

 「金額」が「1000以上」のデータを抽出するには、下記のように設定します。


 「金額」の列の「抽出条件」に「>=1000」を入力します。

 結果はこうなります。

 数値項目に対する条件の入力は、例のようにそのまま数値を入力します。
 テキスト項目の場合は、条件内容をダブルクォーテーション(")かシングルクォーテーション(')で括ります。入力しなくても、ACCESSが勝手に判断して、自動で付けてくれることもあります。
 日付時刻項目の場合は、日付(時刻)をシャープ(#)で括ります。こちらも自動で付加される場合もあります。

○ 範囲指定での抽出

 例えば、金額が1000から1500までのデータを抽出したい場合、先ほどの比較演算子を使って条件を作成すると、次のようになります。

 「AND」を使用して、「1000以上、かつ、1500以下」という条件を作成しています。

 このような範囲条件を作成する為の専用の記述が準備されています。
 「BETWEEN 範囲開始値 AND 範囲終了値」
 という記述で、同様の条件を作成することができます。

 「Between 1000 And 1500」と入力します。

 クエリデザインではどちらの条件記述もたいして変わりませんが、SQL文では記述量が違ってきます。

 前者が、
 WHERE T実績.金額>=1000 And T実績.金額<=1500
 で、後者が
 WHERE T実績.金額 Between 1000 And 1500
 と、なります。
 少々ですが、後者の方がすっきりして見えると思います。
 また、Betweenを使用することで、データベースに範囲条件であることが明示されるので、処理効率が上がる可能性があります。
 前者はANDを使用して複数の結果を評価しています。その他の条件が加わると複雑になってきます。

○ Nullを抽出する

 「Null」は、通常の比較演算子では抽出することができません。
 「Null」を抽出する場合は、条件に「Is Null」と記述します。
 Null以外を抽出する場合は、「Is Not Null」です。

○ AND条件

 2つ以上の条件が共に成り立っているデータを抽出することを、AND条件と言います。
 別々の項目で条件を作成する場合は、条件を「同じ行」に記述します。
 例えば、「日付」が「2012/01/03」で、「担当」が「3」のデータを抽出する場合は、次のように設定します。

 「日付」の抽出条件に「#2012/01/03#」を入力し、その同じ行の「担当」列に「3」を入力します。

 一つの項目で、複数条件を記述したい場合は、同一セル内に「AND」の後に続けて入力していきます。
 例えば、「金額」が「1000以上」、かつ「1500以下」のデータを抽出したい場合、次のように設定します。

 「金額」の抽出条件に、「>=1000 AND <=1500」と入力します。

○ OR条件

 2つ以上の条件が設定されていて、そのうちの1つでも条件が成り立っていればデータを抽出することを、OR条件と言います。
 クエリデザインでは、同じ行に抽出条件を書くと、それらの条件は「AND条件」として実行されます。
 「OR条件」を設定する場合は、条件を入力する行が一致しないように入力します。

 例えば、「担当」が、「1」または「3」のデータを抽出する場合は、次のように設定します。

 「担当」列の「抽出条件」行に「1」を入力して、その下の「または」行に「3」を入力します。
 または、同一セルに「OR」を使って入力することもできます。

 「担当」列の「抽出条件」に「1 Or 3」と入力します。

 別々の項目のOR条件、例えば「日付」が「#2012/01/03#」、または、「担当」が「3」のデータを抽出する場合は、次のように設定します。

 「日付」列の「抽出条件」行に「#2012/01/03#」を入力して、その下の「または」行の「担当」列に「3」を入力します。
 OR条件は、条件を入力するセルの行が一致しないように入力していきます。

○ AND条件とOR条件を使った例

 複数の項目で、AND条件とOR条件を同時に使用する例を一つあげます。
 「日付」が「#2012/01/03#」、かつ、「担当」が「3」、または、「金額」が「1000以上」のデータを抽出する場合、次のように設定します。

 条件をそのままSQL文にすると、
WHERE T実績.日付=#2012/1/3# AND (T実績.担当=3 OR T実績.金額>=1000)
 となります。
 しかしながら、これを直接クエリデザインで設定することはできません。

 クエリデザインで条件を作成するにはちょっと工夫が必要で、上記の条件を、以下のように読み替えてやります。
 「日付」が「#2012/01/03#」、かつ、「担当」が「3」、または、
 「日付」が「#2012/01/03#」、かつ、「金額」が「1000以上」のデータを抽出する。
 より厳密な表現にしたような感じでしょうか。
 この表現であれば、そのままクエリデザインに設定することができます。

 ある程度プログラムを経験した人は、括弧を使った条件の記述が先に頭に浮かぶと思います。その場合、それをクエリデザイン上でどう設定したら良いのか?という所でつまづいてしまうかも知れません。
 クエリデザインは便利なツールですが、SQL文ほど柔軟な条件設定はできません。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。