プロが教えるわが家の防犯対策術!

とても基本的だと思う質問ですが、抽出・除外の設定がうまく出来ず、結局、該当データを手で削除しなかればならないことが続いていおり、良い方法をご教授いただけると嬉しいです。

例えば、同窓会名簿(テーブル名)から、渋谷区、品川区に住んでいる40期生と43期生の女性で絞り込みます。但し、渋谷区青山1丁目に住んでいる人を除外したい場合、どのように除外条件を記入すれば良いのでしょうか。このようなケースの抽出を何度かやってみたのですが、最初の抽出条件が優先されて、一部を除外した上での抽出ができません。

青山一丁目は以下のデータで出来ています
→フィールド名「町」:青山
 フィールド名「番地」:一町目  

まず、〔抽出条件〕の行に以下のように入力してデータを抽出しています。
フィールド名「区」:”渋谷区” or "品川区"
フィールド名「期」:”40” or "43"
フィールド名「性別」:”女”

次に、除外の条件を、〔または〕の行に入れとしたらどのように入れるのでしょうか。それとも〔抽出条件〕で既に<>” ” 等を使って除外出来るのでしょうか。

過去の質問を見てみたのですが、重複データを除いたり、<>(当てはまらない)データを抽出する例は沢山記載が有るのですが、一部の条件だけ合わないデータを除いて抽出する方法に似た質問が見つけられませんでした。

どうぞよろしくお願いします。

質問者からの補足コメント

  • ありがとうございます!アクセスへの直接入力でデータが作成されていた上、主キーがなかったので、教えて頂いた方法に思い至りませんでした!!ちなみにですが、新たなクエリを作らず、「抽出条件」「または」の行だけを使って抽出するのはとても難しいのでしょうか。(vba全文?を自分で書くのはまだまだ不得手です。)

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/09/17 08:54

A 回答 (3件)

同窓会名簿テーブルに主キーに相当するモノが有れば・・と仮定して。


そのフィールド名を仮に『ID』とします。

渋谷区青山一丁目を含む渋谷区、品川区に住んでいる40期生と43期生の女性
を抽出するクエリを作成します。
クエリ名は仮に『Q1』とします。

除外したい渋谷区青山一丁目に住む人だけを抽出するクエリを作成します。
クエリ名は『Q1x』。

最後にQ1を元にもう一個新たなクエリを作成。
フィールド:ID             |区|期|・・・・
 テーブル:Q1             この辺は分かると思うので省略
 並べ替え:
   表示:レ
 抽出条件:Not In (select ID from Q1x)

では?
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございました。
確かに、同姓同名の方が出てくる可能性もありますよね…そこも考えていませんでした(*_*)
とにかく代々色々な方々が、規則性なくデータ入力されていたので、整えるのが大変ですが、教えて頂いたことを参考に直して使いやすくしたいと思います。

お礼日時:2015/09/20 22:40

以下の内容で、クエリのSQLビューに記述して表示はどのようになりますか



SELECT * FROM 同窓会名簿 WHERE
(
区 IN ("渋谷区", "品川区")
AND
期 IN (40, 43)
AND
性別 = "女"
)
;

表示がうまくいったらデザインビューにして、
どのような設定になるのか確認してみてください
(期 は数値型と想定:テキストなら ("40", "43") に変更)

> フィールド名「区」:”渋谷区” or "品川区"

これは、区 = "渋谷区" OR 区 = "品川区" ですが

区 IN ("渋谷区", "品川区")

でも同じことになります


この状態から、

区="渋谷区" かつ 町="青山" かつ 番地="一町目"
区="渋谷区" AND 町="青山" AND 番地="一町目"

じゃない人を条件に加えてみると


SELECT * FROM 同窓会名簿 WHERE
(
区 IN ("渋谷区", "品川区")
AND
期 IN (40, 43)
AND
性別 = "女"
)
AND NOT
(
区="渋谷区" AND 町="青山" AND 番地="一町目"
)
;

の様に、かつ AND、じゃない人 NOT の指定で追記してみます
表示してみて良いようなら、デザインビューでの設定を確認してみます


※ デザインビューでの記述は苦手です
    • good
    • 0
この回答へのお礼

ありがとうございます!説明文付きで文を読むと、すごく分かります!!いつも、クエリをデザインビューで作っては、SQL表示で見てみたりしていたのですが、自分で作ったものにもかかわらず??の時が……
名簿のデータは引き継がれていくものだと考えたら、やはり、主キーを取って、必要に応じて順番にクエリを組む方が、私よりもっと不得手の人が引き継いだ時に分かりやすいのかなと思い、ベストアンサーは、別の方にさせていただきました(>_<)
教えて頂いた設定は、自分自身の仕事にもとても役立つと思いますので、活用させていただきます!

お礼日時:2015/09/20 22:26

主キーは設定しときましょう。


このようなマスターテーブル(変更などがあまり無いモノ)的な場合は
今後の処理(一意のレコード指定)が非常に楽になります。
同姓同名の人が加入するかもしれないしね。

ひとつのクエリ(SQL文)で出来なくもないですが
自由に使うにはちょっと(めっちゃ)辛いだろうと思います。
前述のように段階を追ってクエリを作成すれば
確認も容易なので・・・と考えた次第です。

『Access サブクエリ』でWEB検索すると
http://www.accessclub.jp/sql/20.html
この辺がとっかかりになるのでは?と思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!