- ベストアンサー
重複レコードの合計について
Access に詳しい方、教えて下さい。 下記のような2つのテーブルがあったとします。 コードテーブル 001 AAA 002 BBB 003 CCC 明細テーブル 001 ・・・ 002 ・・・ 001 ・・・ 001 ・・・ 002 ・・・ コードテーブルと明細テーブルをつきあわせてレコードの合計を 求めたいと思っています。(下記のような結果になるように) 001 3 002 2 003 0 重複クエリで出来るのかと思っていますが、なかなか分かりません。 どなたか分かる方いらっしゃいますでしょうか? どうかよろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> レコードの合計を これはレコードの件数で良いのでしょうか > 003 0 この部分の出し方だと思いますが、 コードテーブル名を「T6」と、 明細テーブル名を「T6_1」と、 結び付ける「001」とかの部分のフィールド名を[id]と仮定します。 クエリのSQLビューで以下を記述します。 SELECT T6.id, Sum(IIf(IsNull([T6_1].[id]),0,1)) AS 件数 FROM T6 LEFT JOIN T6_1 ON T6.id = T6_1.id GROUP BY T6.id; コードテーブル「T6」の「id」でグループ化しますが、その時の集計で Sum(IIf(IsNull([T6_1].[id]),0,1)) AS 件数 コードテーブル「T6」の全てと、 「T6」の「id」に対応する明細テーブル「T6_1」の「id」がNULLでないものをカウントします。 (「T6」にあり、「T6_1」にない「id」はNULLとなるので、IsNull なら 0 へ)
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
明細テーブルのAAA,BBB,CCCが使われてないが、それで良いですか。それなら質問には不要では。 ーー >レコードの合計を求めたいと 明細テーブルの番号別件数一覧で良いようなのだが、そうか。 番号でグループ化して件数をクエリで出したら仕舞いでは。
お礼
回答ありがとうございました。 >明細テーブルのAAA,BBB,CCCが使われてないが、 >それで良いですか。それなら質問には不要では。 大変失礼致しました。不要でした。コードと名称を入れたテーブル だったものでイメージとして書いてしまいました。 >明細テーブルの番号別件数一覧で良いようなのだが、そうか。 >番号でグループ化して件数をクエリで出したら仕舞いでは。 はい。明細テーブルの番号別の件数でよいのですが、最終的には グラフを作りたく、コードテーブルにあっても明細テーブルで 使われていない場合は 0 としたいと思っていました。
- bin-chan
- ベストアンサー率33% (1403/4213)
クエリを2つ使います(使わない方法もあるが説明が複雑なので略) まず「明細テーブルをコード毎に件数を数える」クエリを作ります。 1)オブジェクト「クエリ」で新規作成。 2)「テーブルの追加」でテーブルから[明細テーブル]を選択してOK。 3)[コード]を下の格子にドラッグ&ドロップ。 4)もう一回[コード]を下の格子にドラッグ&ドロップ。 5)メニューの表示>集計をクリック(折りたたまれているならダブルクリックで表示されます) 6)下の格子に、一行追加されるので、3)の[コード]では[グループ化]を 4)の[コード]では[カウント]をそれぞれ選択。 7)名前を付けて保存。(とりあえずクエリ1としておきます) 次に今作った[クエリ1]と[コードテーブル]をつなぐクエリを作ります。 8)オブジェクト「クエリ」で新規作成。 9)「テーブルの追加」で、テーブルから[コードテーブル]、クエリから[クエリ1]、を選択してOK。 10)たぶん[コードテーブル]の[コード]と[クエリ1]の[コード]が線で結ばれているはず。 結ばれて無ければ[コードテーブル]の[コード]を[クエリ1]の[コード]へドラッグ&ドロップ。 11)10)の線をダブルクリック。 12)1・2・3を選べる箇所があるので[コードテーブルのすべて・・・]を選択してOK。 13)[コードテーブル]の[コード]と、[クエリ1]の[式1(コードの件数かも)]をそれぞれ下の格子にドラッグ&ドロップ。 14)名前を付けて保存。(とりあえずクエリ2としておきます) 15)今作った「クエリ2」を実行。 ただし、例示の > 003 0 がNULL(空白)になるかも?003が空白で表示されるのはイヤ!であれば nz([式1(コードの件数かも)])で0になるはず。 ACCESS2007は触ってないので、手順が異なるかも。
お礼
回答ありがとうございました。 大変詳しい説明で、Access素人勉強中の私にも順を追ってやったところ 希望通りのものができました。 クエリ1つでやろうとするから難しかったんですね。 本当に詳しい手順で分かりやすく、大変勉強になりました。 ありがとうございました。
お礼
回答ありがとうございました。 詳しい説明で助かりました。こちらも試してみましたが、お陰様で 希望通りのものができました。 SQL文がまだ苦手なので、こんな書き方があるのかと大変勉強に なりました。 いろいろな方法で実現可能と知りました。ありがとうございました。