- 締切済み
access2007で、条件抽出する方法を教えてください
ACCESSの初心者です。 下記データ形式で、条件抽出を行いたいです。 【テーブル1】 【抽出条件テーブル】 【抽出結果テーブル】 ・抽出条件は、完全一致抽出でなく”含む”でやりたいです・(例:)*老人福祉施設* ・そして、抽出結果には、重複行が出ないよう、重複削除がされていて欲しいです。 ・【抽出条件テーブル】の内容を更新されたら、容易に、新たな結果を取得できるような仕組みにしておきたいです。 【テーブル1】 会社名 業種 住所 *****慶和園 特別養護老人ホーム,老人福祉施設 北海道虻田郡京極町字更進 ***特別養護老人ホームほのぼの荘 特別養護老人ホーム 北海道利尻郡利尻町仙法志字政泊 ***町役場/特別養護老人ホーム 特別養護老人ホーム 北海道利尻郡利尻富士町鬼脇字金崎 ***村役場/特別養護老人ホーム銀河荘 特別養護老人ホーム 北海道虻田郡留寿都村字留寿都 ****/普仁園・愛仁園 特別養護老人ホーム,福祉施設,養護老人ホーム,老人福祉施設 北海道帯広市南町 【抽出条件テーブル】 業種 住所 老人福祉施設 北海道 老人福祉施設 青森県 老人福祉施設 岩手県 ラーメン店 北海道 ラーメン店 青森県 ラーメン店 岩手県 【抽出結果テーブル】 会社名 業種 住所 *****慶和園 特別養護老人ホーム,老人福祉施設 北海道虻田郡京極町字更進 ***特別養護老人ホームほのぼの荘 特別養護老人ホーム 青森県******* ***町役場/特別養護老人ホーム 特別養護老人ホーム 岩手県利尻郡利尻富士町鬼
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 30246kiku
- ベストアンサー率73% (370/504)
提示されたサンプルは、空白部分が項目の区切りですよね。 【テーブル1】の名前を「T1」、項目が「会社」「業種」「住所」 【抽出条件テーブル】の名前を「T2」、項目が「業種」「住所」 と仮定します。 抽出結果を表示するクエリを考えてみます。 SELECT DISTINCT T1.* FROM T1, T2 WHERE T1.業種 LIKE "*" & T2.業種 & "*" AND T1.住所 LIKE T2.住所 & "*" ; ※住所部分は前方一致にしてみました。 【抽出結果テーブル】の名前を「T3」、項目が「会社」「業種」「住所」とすると、 SELECT DISTINCT T1.* INTO T3 FROM T1, T2 WHERE T1.業種 LIKE "*" & T2.業種 & "*" AND T1.住所 LIKE T2.住所 & "*" ; ※使えるものなのかは、やってみてください。 間違ってたらごめんなさい。 ※ DISTINCT の使い方をヘルプ等で確認してみてください。 (重複うんぬんの時に便利かも)
- nda23
- ベストアンサー率54% (777/1415)
Like演算子で"*老人福祉施設北海道*"を使うと、連続して 「老人福祉施設北海道」を含むものしか抽出できませんが、 それでよいのでしょうか? だとすると、「老人福祉施設青森県」では抽出結果2番目の 「特別養護老人ホームほのぼの荘特別養護老人ホーム青森県」は "老人ホーム"≠"老人福祉施設"なので、抽出されません。 >重複削除がされていて欲しいです 1回のクエリ操作では実現できません。下記のような2回の操作に なります。先ず「抽出」というクエリを作っておきます。 (1)抽出と抽出結果を結合し、一致するデータを抽出結果から削除 (2)抽出から抽出結果に挿入 但し、抽出と抽出結果に、1:1の関係がないと削除できません。 つまり、会社名業種住所が一意キーか重複を許さないインデックスに 指定されている必要があります。 また、SQLとしてはWHERE句ではなくJOIN句に指定する方が自然ですが、 JOIN句でLike演算子を使う場合は直接SQLを書き込むしかありません。 もし、業種と住所が別フィールドであるとかの事情があれば補足して下さい。
- mshr1962
- ベストアンサー率39% (7417/18945)
追加クエリまたはテーブル作成クエリで【テーブル1】と【抽出条件テーブル】を連結なしで使用 フィールド名:会社名業種住所 テーブル名 :テーブル1 抽出条件 :Like "*" & [抽出条件テーブル].[業種住所] & "*"