- 締切済み
ACCESSですべての明細が一致するデータの抽出
以下のような、構造が同じ2つのテーブルがあります。 2012注文テーブル 会社cd 商品cd A 1 A 2 B 1 C 1 2013注文テーブル 会社cd 商品cd A 1 A 2 B 1 B 2 C 2 このとき、両方のテーブルの注文が完全に一致した会社(この例ですとA社)のみを 抽出したいのですが、うまくいきません。 select distinct a.会社cd from 2012注文 a, 2013注文 b where a.会社cd = b.会社cd and a.商品cd = b.商品cd などでは、1つだけ一致するB社も抽出されてしまいます。 すべてのレコードが一致する会社だけを抽出するには、どうすればよいのでしょうか。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
次のように二つのテーブルにデータを入れます。 2012テーブル1 ID 会社ID 商品ID 1 a 1 2 a 2 3 b 1 4 c 1 2013テーブル2 ID 会社ID 商品ID 1 a 1 2 a 2 3 b 1 4 b 2 5 c 2 クエリーで商品IDが1の場合は10、そうでなければ基のままにするクエリーをふたつ作ります。 クエリー1 ID 会社ID 商品ID 式1 1 a 1 10 2 a 2 2 3 b 1 10 4 c 1 10 式1: IIf(Format([2012テーブル1]![商品ID])=1,10,[2012テーブル1]![商品ID]) 2013クエリー2 会社ID 商品ID 式1 a 1 10 a 2 2 b 1 10 b 2 2 c 2 2 式1: IIf(Format([2013テーブル2]![商品ID])=1,10,[2013テーブル2]![商品ID]) 会社ごとに合計します。 2012集計クエリー2 会社ID 式1の合計 a 12 b 10 c 10 2013集計クエリー2 会社ID 式1の合計 a 12 b 12 c 2 二つのクエリーをリレーションで関係付けてから一つのクエリーにまとめます。 会社ID 2012集計クエリー2.式1の合計 2013集計クエリー2.式1の合計 式1 a 12 12 0 b 10 12 -2 c 10 2 8 式1: [2012集計クエリー2]![式1の合計]-[2013集計クエリー2]![式1の合計] そしてこのクエリーの抽出条件として式1の値が0を指定すると次のようになります。 判定クエリー2 会社ID 2012集計クエリー2.式1の合計 2013集計クエリー2.式1の合計 式1 a 12 12 0 抽出条件 0
お礼
この方法ですと、商品数に限りがありそうですね。 NOT EXISTSなどでなんとかなりそうです。 ありがとうございました。