アプリ版:「スタンプのみでお礼する」機能のリリースについて

OS:WindowsXP SP3
使用ソフト: Microsoft Access2003


選択クエリにて、別テーブルのフィールドにある値すべてを抽出条件にできますか?


ホームページに来て頂いた方の検索キーワードを集計しております。
テーブル1には『検索キーワード履歴』フィールドがあり、お客様が使用した検索キーワードが入力されています。(約2万件)
テーブル2には『除外キーワード候補』フィールドがあり、不要なキーワードが入力されています。(約10件)


クエリにて、『検索キーワード履歴』から『除外キーワード候補』の値を全て除いた結果を出力させたいのですが、
抽出条件をどのように指定したらいいのか分かりません。

そもそも、別テーブルのフィールドにある値すべてを除外させる抽出条件って指定できるのでしょうか。
SQLを用いる方法でも構いませんので教えてください。

A 回答 (3件)

SELECT * FROM テーブル1


WHERE NOT EXISTS
(SELECT * FROM テーブル2 WHERE テーブル1.検索キーワード履歴 = テーブル2.除外キーワード候補)
OR 検索キーワード履歴 IS NOT NULL
とか
SELECT * FROM テーブル1
WHERE 検索キーワード履歴 NOT IN (SELECT 除外キーワード候補 FROM テーブル2 )
ということ?
1フィールドに1キーワードの場合です。

この回答への補足

投稿頂きました内容が自己解決の手段と同じでしたので、BAとさせていただきます。

補足日時:2011/01/27 22:43
    • good
    • 2
この回答へのお礼

お返事頂きましてありがとうございます。

今後の参考にさせていただきます。

お礼日時:2011/01/27 22:38

>解決方法をご存知でしたら改めてお願い申し上げます。



下記3通りのいづれかをお試しください。

「表示」「集計」で集計方法を「グループ化」
http://office.microsoft.com/ja-jp/access-help/HP …

クエリのプロパティを表示して「固有のレコード」を「はい」にする。
http://office.microsoft.com/ja-jp/access-help/HA …

フィールドのプロパティを表示して「固有の値」を「はい」にする。
http://office.microsoft.com/ja-jp/access-help/HA …

この回答への補足

自己解決しました。
以下、経緯を記入いたします。


目的:
クエリの抽出条件として、別テーブルに登録されているレコード・フィールドを除外キーワードとして使いたい。


参考ページ:No30101.クエリのNot演算子について教えていただけませんか
http://www.accessclub.jp/bbs/0081/beginers30101. …


■解決方法■
1.クエリ作成画面にて テーブル1 の『ID』フィールドと『検索キーワード履歴』を登録します。(『ID』フィールド必須)

2.『ID』フィールドの抽出条件に、以下の文法にて入力します。(改行しない場合は半角スペースを入れてください)

文法:
Not In (SELECT 検索元テーブル.IDフィールド
FROM 検索元テーブル, 除外キーワードテーブル
WHERE 検索元テーブル.検索したいフィールド Like "*" & 除外キーワードテーブル.除外キーワードフィールド & "*")

今回の場合:
使用したテーブルは以下の通り

テーブル1   (テーブル名/検索元テーブルです)
--------------------
ID(フィールド/IDとして使用)
検索キーワード履歴  (フィールド名/検索されるデータ)


テーブル2   (除外したいワードが登録されている)
--------------------
除外キーワード候補  (フィールド名/抽出クエリに用いる除外したいキーワードが登録されている)


実装するとこんな感じ:
Not In (SELECT テーブル1.ID
FROM テーブル1, テーブル2
WHERE テーブル1.検索キーワード履歴 Like "*" & テーブル2.除外キーワード候補 & "*")


以上。
部分一致として動作し、別テーブルのフィールドに登録されたキーワード全件を除外した上で、クエリを出力します。


以上です。失礼いたします。

補足日時:2011/01/27 22:36
    • good
    • 0

選択クエリでテーブル1、テーブル2を連結しないで選択



テーブル1の検索キーワード履歴の抽出条件欄に

<>[テーブル2].[除外キーワード候補]

と入力して保存

もし、除外キーワード候補が検索キーワード履歴の一部分なら条件は

Not Like "*" & [テーブル2].[除外キーワード候補] & "*"

としてください。
    • good
    • 3
この回答へのお礼

お返事頂きましてありがとう御座います。

教えていただきました部分一致による抽出条件
Not Like "*" & [テーブル2].[除外キーワード候補] & "*"
によりクエリを実行したところ、意図せぬ結果が出力されました。

部分一致による抽出は機能していますが、
テーブル2.除外キーワード候補へ登録されているレコードの数ぶん(10件)同一内容が出力されてしまいます。


■出力結果(各結果が10件ずつ表示される)
おにく
おにく
おにく
おにく
おにく
おにく
おにく
おにく
おにく
おにく
お魚
お魚
お魚
お魚
お魚
お魚
お魚
・・・以下略


■希望(1件毎に表示)
おにく
お魚
冷凍食品
調味料
菓子
・・・
・・・
・・・以下略


なお蛇足ですが、
Like "*" & [テーブル2].[除外キーワード候補] & "*"
にて実行すると、[除外キーワード]を含む値が1件毎正常に出力されます。
Like と Not Like では挙動が異なるようです。

解決方法をご存知でしたら改めてお願い申し上げます。

お礼日時:2011/01/27 20:50

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A