Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1065 / 9994 ←次へ | 前へ→

【12231】Re:二つのテーブルからすべてのデータを表示
回答  かるびの  - 12/12/28(金) 2:12 -

引用なし
パスワード
    ユニオンクエリは、テーブルを縦にくっつけるだけですから、
出荷品名がりんごであるレコードは、月間出荷抽出テーブルに2レコード、
売上品名がりんごであるレコードは、月間売上テーブルに1レコードあるとすると、
両テーブルのユニオンクエリにおいて出荷品名がりんごであるレコードは、
2+1=3レコードとなります。

>製番  出荷日   出荷品名  出荷数  売上日  売上数 売上金額
>1001         りんご      2012/10/10  7   618000
>1001  2012/10/04  りんご    2
>1001  2012/10/10  りんご    5
のようになるのは、必然です。


 得たい結果をクエリで得るのは、なかなか困難だと思います。

 得たい結果である
>製番  出荷日   出荷品名  出荷数  売上日  売上数 売上金額
>1001  2012/10/04  りんご    2   2012/10/10  7   618000
というレコードは、両テーブルを内部結合させたものです。

 他方、
>製番  出荷日   出荷品名  出荷数  売上日  売上数 売上金額
>1005         ライチ       2012/10/31  1    87100
というレコードは、両テーブルを右外部結合させたものです。

>製番  出荷日   出荷品名  出荷数  売上日  売上数 売上金額
>1007  2012/10/08  さくらんぼ  2
というレコードは、両テーブルを左外部結合させたものです。

 問題なのは、このレコードです。
>製番  出荷日   出荷品名  出荷数  売上日  売上数 売上金額
>1001  2012/10/10  りんご    5

 両テーブルを結合させると、内部結合でも、左外部結合でも、右外部結合でも、
製番1001は、
>製番  出荷日   出荷品名  出荷数  売上日  売上数 売上金額
>1001  2012/10/04  りんご    2   2012/10/10  7   618000
>1001  2012/10/10  りんご    5   2012/10/10  7   618000 
となります。

 したがって、
>製番  出荷日   出荷品名  出荷数  売上日  売上数 売上金額
>1001  2012/10/10  りんご    5
のレコードは、両テーブルを結合させることなく、
月間出荷抽出テーブルだけから引っ張ってきたレコードです。

 つまり、得たい結果は、テーブルの結合の仕方が混在したものなのです。

 結局、クエリだけでやるなら、
   左外部結合のクエリ、
   右外部結合のクエリ、
   月間出荷抽出テーブルだけから引っ張ってくるクエリ、
   月間売上抽出テーブルだけから引っ張ってくるクエリ、
を作り、それらによるユニオンクエリを作ります。
その際、うまく抽出条件を設定し、重複しないようにする必要があります。
ただ、この抽出条件の設定は、集計クエリやサブクエリを駆使する必要がありそうであり、
かなり面倒くさそうです。


 ちなみ、レポートに表示させるのであれば、
レコードソースを、
両テーブルを左外部結合したクエリと、右外部結合したクエリとによる
ユニオンクエリとした上で、
レポートの「重複データ非表示」プロパティを「はい」に設定すれば、
御希望のことは可能ではないかと思います。

229 hits

【12230】二つのテーブルからすべてのデータを表示 M_S 12/12/26(水) 15:36 質問[未読]
【12231】Re:二つのテーブルからすべてのデータを表示 かるびの 12/12/28(金) 2:12 回答[未読]

1065 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078191
(SS)C-BOARD v3.8 is Free