- 締切済み
当方access の初心者ですよろしくお願いします
ご覧頂き誠にありがとうございます。 当方アクセスの初心者ですが会社の顧客リスト作成を頼まれており、アクセスにて、複数に分かれたエクセルファイル同士を繋ぎ合せてエクセルで顧客リストを作成したいと考えております。 エクセルファイルなのですが、1つ目は住所リスト(顧客番号、名前、住所)でもう一つは売上データ(顧客番号、名前、売上高)です。住所データは全顧客記載、売上データは該当の顧客のみ記載されております。(売上0の顧客は記載せず) 上記ファイルをアクセスに取り込み選択ウィザードで顧客番号を主力キーにして合体をさせたのですが、売上データに記載の顧客のみが抽出され住所リストの一部顧客が消えてしまいます。(売上のある顧客の顧客番号、名前、住所、売上高は記載できました。) 2つのファイルを合体させて全顧客の顧客番号、名前、売上(売上がない場合は空欄)と抽出をしたいです。 お力添え頂けると幸いです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Anzu4699
- ベストアンサー率59% (26/44)
すでに、f_a_007様の回答が出ているので、自分は別の視点から回答させて頂きます。 売上データにだけ存在する顧客があると想定し以下回答 初心者にはSQL文はきついかな・・・ でも、今後Accessを使っていくならば覚えていったほうが良いです 以下のテーブルを用意 住所リスト(顧客番号、名前、住所 )をTBL_ADRとし、顧客番号 1001,1002,1003を作成しておく 売上データ(顧客番号、名前、売上高)をTBL_URIとし、顧客番号 1002,1003,1004を作成しておく 抜粋>主力キーにして合体をさせたのですが、 抜粋>売上データに記載の顧客のみが抽出され住所リストの一部顧客が消えてしま~ 上記、現象から売上データを主体に作成しようとしているためと推測されます ■現象からの推測SQL SELECT TBL_ADR.顧客番号, TBL_ADR.名前, TBL_ADR.住所, TBL_URI.売上高 FROM TBL_URI INNER JOIN TBL_ADR ON TBL_URI.顧客番号 = TBL_ADR.顧客番号; または SELECT TBL_ADR.顧客番号, TBL_ADR.名前, TBL_ADR.住所, TBL_URI.売上高 FROM TBL_URI LEFT JOIN TBL_ADR ON TBL_URI.顧客番号 = TBL_ADR.顧客番号; となっていると思われます。 ■住所リストを主体にしたい場合のサンプルSQL SELECT TBL_ADR.顧客番号, TBL_ADR.名前, TBL_ADR.住所, TBL_URI.売上高 FROM TBL_ADR LEFT JOIN TBL_URI ON TBL_ADR.顧客番号 = TBL_URI.顧客番号; 上記コードだと、住所リストにはなく、売上データにだけある顧客(顧客番号=1004)は抽出されません ■住所リスト、売上データの顧客すべてを表示させたい場合のサンプルSQL (1).まず売上データだけにある顧客(1004)を列挙 (不一致クエリと呼ばれる物です) SELECT TBL_URI.顧客番号,TBL_URI.名前,TBL_ADR.住所, TBL_URI.売上高 FROM TBL_URI LEFT JOIN TBL_ADR ON TBL_URI.[顧客番号] = TBL_ADR.[顧客番号] WHERE (((TBL_ADR.顧客番号) Is Null)); (2).住所リストの顧客(1001,1002,1003)を主体にしたSQL SELECT TBL_ADR.顧客番号, TBL_ADR.名前, TBL_ADR.住所, TBL_URI.売上高 FROM TBL_ADR LEFT JOIN TBL_URI ON TBL_ADR.顧客番号 = TBL_URI.顧客番号 (3).UNIONでひとつの出力結果を出す(1,2を合体させる) SELECT TBL_ADR.顧客番号, TBL_ADR.名前, TBL_ADR.住所, TBL_URI.売上高 FROM TBL_ADR LEFT JOIN TBL_URI ON TBL_ADR.顧客番号 = TBL_URI.顧客番号 UNION SELECT TBL_URI.顧客番号,TBL_URI.名前,TBL_ADR.住所, TBL_URI.売上高 FROM TBL_URI LEFT JOIN TBL_ADR ON TBL_URI.[顧客番号] = TBL_ADR.[顧客番号] WHERE (((TBL_ADR.顧客番号) Is Null)); ※UNIONを用いる場合、クエリデザイナーでは作成が出来ません 表示をSQLビューに切り替えて自分でSQL文を入力することになります。 (4).3で纏めたSQLを顧客売上台帳という名で保存 <顧客売上台帳 出力結果> 顧客番号 , 名前 , 住所 , 売上高 1001 , ○○○○ , ○○○○ , 1002 , ○○○○ , ○○○○ , \200 1003 , ○○○○ , ○○○○ , \300 1004 , ○○○○ , ○○○○ , \400 以上です
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- yasuto07
- ベストアンサー率12% (1344/10625)
3センチくらいある・アクセスの本を読んでみたら、リレーショナルの対応がうまくいってないのです。 考え方としてはね。簡単にはいきませんよ、本を読みましょう。