• ベストアンサー

ACCESS で、存在しないデータも表示させたい(?)

こんにちは。すみません、タイトルが日本語的に変ですね(汗) ACCESS 2000 初心者です。 商品CODE表 1 2 3 に対し、 売上9月 1 … 100 3 … 50 売上10月 2 … 30 3 … 70 というデータがあったとします。 これを単純に、選択クエリで結びつけると、 CODE 9月 10月 3   50  70 とだけ表示しますね。 下記のように CODE 9月 10月  1  100   0  2   0   30  3  50   70 表示させることはできますか? EXCELでVLOOKUP した場合、#N/A 等で表示してくれますよね。そしたら ISERROR 関数などで0表示するのですが。。 ACCESS はイメージが掴めなくて困っています。ヒントをください。

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

  • ベストアンサー
  • osumitan
  • ベストアンサー率33% (102/307)
回答No.1

SQLでいうところの"LEFT JOIN"を使うことになりますね。 そのまま結合すると"INNER JOIN"になっているので、 結合の左右いずれかが存在しないものは出てきません。 "LEFT JOIN"にすると、左にあって右にないものについては 右側から取る値がNULLになって表示されます。 (ここでは左側は商品CODE、右側は売り上げが相当します) Accessでデザインビューでこの指定をするには、まず 結合の矢印を右クリックして「結合のプロパティ」を開きます。 そこで2番の、'商品CODE表'の全レコードと売上9(10)月の 同じ結合フィールドのレコードだけを含める、 という項目を選択すればOKです。

megumaru
質問者

お礼

ものすごい早い回答、ありがとうございます!

megumaru
質問者

補足

さっそく実行してみました。すると、 商品CODE と売上9月 商品CODE と売上10月 は、それぞれ望む結果が得られた(セル?が空白表示された)のですが、 商品CODE と売上9月 と売上10月 を同じクエリ内に取り込み、実行しようとすると あいまいな外部結合が含まれているので、SQLステートメントを実行できません。いずれかの結合を最初に実行するために、第一次結合を実行する分割クエリを作成し、SQLステートメントにそのクエリを含めてください。 というエラーメッセージが出ました。 本当に恥ずかしいのですが、意味すらよく分かりません。 ご指導いただければ、ありがたいです。。

その他の回答 (3)

  • Ryocchi
  • ベストアンサー率38% (38/98)
回答No.4

クエリをデザインで開くと、「商品コード表」テーブルと「売上9月」、「売上10月」のテーブルが”商品コード”をキーに結合していると思います。 この結合している線をダブルクリック(又は、[表示]-[結合プロパティ]をクリック)して、「商品コード表の全レコードと売上9月(売上10月)の同じ結合フィールドのレコードだけを含める」という所にチェックを入れる(9月、10月それぞれに行ってください)と出来ると思います。

megumaru
質問者

お礼

ありがとうございました! なんとか結果を出してみることができました!

  • banker_U
  • ベストアンサー率21% (17/78)
回答No.3

#1さんへの補足を読みました。 うまくいかない理由がよくわかりませんが、とりあえず、エラーの内容どおり、 1.商品codeと9月だけのクエリを一回作る。 2.そのクエリと10月でまたクエリを作る。 でとりあえず解決はできると思います。 根本的な解決は、SQLビューの内容をここに、書いていただければ、解決できるかもしれません。 念のためやりかたは、 選択クエリウインドウのタイトルバーを右クリックしてSQLビューです。

megumaru
質問者

お礼

フォローありがとうございます! 家では2000ですが、現在会社で97で同じことをしてみました。 同じようにエラーになり、SQLビューを表示しようとしても同じエラーメッセージです。。が、 9月と10月の間に勝手にできていた結合線を削除してみたら、望んだ結果が出てきました。 な、なんかよくわからないのですが、一つ学習できました。

  • arare2005
  • ベストアンサー率31% (63/199)
回答No.2

商品code_DB に売上9_DB、売上10_DB を結合します。 この結合の時に、結合線が出ますが、これを選択して右クリックすると、両方存在する場合、商品_code_DBに存在する場合等、どちらを基準にするかの結びつけができます。 今は、商品_code_DB⇔売上_DB  か、売上9_DB⇔売上10_DB だと思いますので これを商品_code_DB→売上_DB に変更して下さい。 要は、基準になる元から、何を抽出するかをなるべく単純に行う方法を考えれば、判り易いし速く動作するクエリが出来ますヨ(^^) 売上9、10_DBも分けられているのであれば、キーに年月(日付よりは数値か文字で6桁が入力可能な属性が良いかも)を入れると、後々便利ですよ(^^)v

megumaru
質問者

お礼

ありがとうございました! でもきっと、おっしゃられていることはNo.1のosumitan 様と同じですよね。。 (補足の重複は避けます) とてもドン臭い私なのですが、社内の部署の中ではそこそこEXCEL(&VBE)が使えるので、今度はACCESS! と押し付けられてしまい、途方にくれています。 ゆくゆくはSQLというものも齧り、マクロの実行まで覚えなければなりません。 またよろしくお願いします。。

関連するQ&A

専門家に質問してみよう