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

解決済みの質問

Accessの結合に詳しい方

依頼に対し、Accessを用いて対応したいと思いますが、まずは依頼内容を説明します。

顧客リストがエクセル形式で送られてきます。
このリストには「電話番号」と「メールアドレス」の列がある。
社内データベースの顧客テーブルにも「電話番号」と「メールアドレス」に相当するフィールドがある。
依頼は、顧客リストにある「電話番号」か「メールアドレス」のどちらかがDBに実在する各顧客をピックアップしたいというものです。
具体的には、どちらか片方だけ存在する場合は「1」、両方存在する場合は「2」、
どちらもない場合は空欄を、顧客リストのそれ用の記録列に記載するイメージです。

この依頼に対応するため、Accessを用いたいと思います。
思いついた手順は以下です。

・Accessで新規テーブルを作成し、顧客リストを全て貼り付ける。
・顧客DBの全データをインポートする。(もちろん、別のテーブル)

・「電話」クエリを作り、顧客リストの電話番号と顧客DBの電話番号を結合キーとして内部結合する。
・「電話」クエリを実行し、出てきた電話番号を持つ顧客について、顧客リストの記録列に「1」と記入。

・同様に「アドレス」クエリを作り、実行し、どちらか片方だけ存在する場合は「1」、両方存在する場合は「2」と記入。

以上ですが、要するに、クエリを分けるのではなく、一度にやりたいと思います。
顧客リストの電話番号とアドレスについて、DBに片方のみDBに存在するか、両方存在するか区別しつつ、抽出することはできますか?
よろしくお願いします。

投稿日時 - 2017-05-23 22:11:24

QNo.9332702

困ってます

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

下記の手順を試してください。

クエリを新規作成する。
顧客リストを追加する。
次に、顧客DBを追加する。
さらに、顧客DBを追加する。これには、顧客DB_1 と別名が付きます。

顧客リストと顧客DBの電話番号を結合して、結合線をダブルクリックして、「’顧客リスト’の全レコードと・・・」というオプションを選択します。(外部結合)

顧客リストと顧客DB_1のメールアドレスを結合して、結合線をダブルクリックして、「’顧客リスト’の全レコードと・・・」というオプションを選択します。(外部結合)

クエリのフィールド欄に下記の式を設定します。
記録: -([顧客DB].[電話番号] Is Not Null)-([顧客DB_1].[メールアドレス] Is Not Null)

以上です。SQLだと、

SELECT
顧客リスト.*,
-([顧客DB].[電話番号] Is Not Null)-([顧客DB_1].[メールアドレス] Is Not Null) AS 記録, 顧客DB.電話番号, 顧客DB_1.[メールアドレス]
FROM
(顧客リスト LEFT JOIN 顧客DB ON 顧客リスト.電話番号 = 顧客DB.電話番号) LEFT JOIN 顧客DB AS 顧客DB_1 ON 顧客リスト.[メールアドレス] = 顧客DB_1.[メールアドレス];

投稿日時 - 2017-05-24 02:08:21

お礼

おかげさまで何とかなりました。
大変助かりました。

投稿日時 - 2017-05-26 21:54:18

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

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

回答(1)

あなたにオススメの質問