こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

別のテーブルのフィールドを抽出項目にするには?

別のテーブルのフィールドを抽出項目にするには?

Access初心者です。
申し訳ありませんが、急ぎ回答いただきたく思います。
どうか宜しくお願いいたします。

お伺いしたい内容は、

データが多く、抽出条件も多いので、
別のテーブルのフィールドに入っている単語を使い、
抽出したい元データのレコードをあいまい検索して非表示にしたいです。

データの内容は下記になります。

---------------------------------------
元データ(テーブル1とテーブル2から結合したクエリ(名前は元データ)
フィールド1 フィールド2
ID-1     りんご
ID-2     バナナ
・       ・
・       ・
・       ・
ID-2000    チェリー
---------------------------------------
---------------------------------------

除外リスト(テーブル3。名前は除外リスト)
フィールド1
りんご
チェリー



---------------------------------------

元データのフィールド2に
Not Like "*りんご*" And Not Like "*チェリー*"
と記述すれば、フィールド2にりんご、チェリーを含むレコード以外のものが表示され、
欲しい情報が手に入るのですが、(上記例だとバナナのみ表示される)
実際にはりんご、チェリーなどあいまい検索し、非表示にしたいキーワードが100個あります。

なので、除外リストというテーブルをつくり、
そのフィールド内に書かれたキーワードを使い
Not Like "*りんご*" And Not Like "*チェリー*"
と同じような表示結果になるようにしたいのですが、
やり方が調べてもどうしてもわかりません。

どうか皆様のお力を貸してください。
宜しくお願いいたします。

投稿日時 - 2010-08-12 21:38:12

QNo.6105425

すぐに回答ほしいです

質問者が選んだベストアンサー

以下でどうなるでしょうか。

元データのクエリの名前を「元データ」とします。
除外リストは、そのまま「除外リスト」名とします。

SELECT * FROM 元データ
WHERE NOT EXISTS (
SELECT 1 FROM 除外リスト
WHERE 元データ.フィールド2 LIKE "*" & 除外リスト.フィールド1 & "*"
)
;


曖昧で一致するもの、が無ければ…、と考えてみましたが。

(修理性能はわかりません)

投稿日時 - 2010-08-12 23:03:29

お礼

ありがとうございます!
できました!!
本当に助かりました!詳しく書いてくださってありがとうございます!

皆様にポイントお付けしたいのですが、解決できたご回答でつけさせてください!
本当にありがとうございました!

投稿日時 - 2010-08-12 23:19:40

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

こちらが参考になると思います

ACCESS クエリ 抽出条件が多い場合
http://okwave.jp/qa/q4719476.html

参考URL:http://okwave.jp/qa/q4719476.html

投稿日時 - 2010-08-12 22:49:17

お礼

ご回答ありがとうございます!
参考に貼っていただいたリンク拝見いたしました!
ありがとうございます!

ただ、勉強不足で申し訳ありません。
下記項目、あいまい方向を追加のやり方がわからず…
もしよろしければ教えていただけないでしょうか?(新しく質問したほうがいいのかわからず…申し訳ありません)
どうぞ宜しくお願いいたします。

検索する文字列テーブルに細工(曖昧方向を追加)
検索する文字列テーブル(名前:TS)
 フィールド(名前:FN)/ 曖昧方向(名前:SP)
  aaa            1
  bba            1

曖昧方向の意味
=1:後方曖昧 (例:aaa*)
=2:前後曖昧 (例:*aaa*)
=3:前方曖昧 (例:*aaa)

投稿日時 - 2010-08-12 23:05:08

ANo.1

こういう課題はVBAで無いと出来ないでしょう。
そして背後にはSQLの利用が必要か。
操作だけで、検索条件の文字列を他テーブルから持ってくるのは、アクセスの予想外の使い方(の要望)ではないかな。
SQLを使う場合も1SQL文の文字列の長さに制約があるので注意が必要なんだか、見たところまず大丈夫か。
http://www.accessclub.jp/bbs6/0007/das1816.html
指定した物を削除したクエリをつくり、それを対象にさらに次の指定したものを削除の方法を繰り返す方法も指定が多いと現実的な方法ではないし。
共通しないレコードを抽出する方法も指定が多いと現実的でない。
一回限りなら、Not Like "*りんご*" And Not Like "*チェリー*"・・の文字列をプログラムなどでどこかにつくり、それを手動でSQLビューのSQL文にコピー貼り付けするとか。
そうなるとSQL文全体をプログラムで作るに近いが。
ーー
あるいは全レコードを読んで(ADOなど)、各レコードにおいて、100条件に該当するかどうか(Instr関数など利用)調べ、該当しないレコードを書き出す、を繰り返す方法も思い浮かぶが、処理時間がかかるかも。条件に該当するものに、決めたフィールドに印をつければ、その後のフィルタは簡単だが。

投稿日時 - 2010-08-12 22:44:38

お礼

ご回答ありがとうございます!
簡単にできるようなものではないのですかね…;;
まだまだ勉強不足でプログラムを作るのは難しく…
今後も教えていただいたリンクを参考に勉強してみたいと思います。
どうもありがとうございます。

投稿日時 - 2010-08-12 23:03:14

あなたにオススメの質問