Microsoft Access 掲示板

クエリでグループ化したもののレコード数をカウントしたい

6 コメント
views
4 フォロー

hatenaさん、みなさん、御世話になっております。

テーブル「団体台帳」に 団体ID 団体名・・・
テーブル「健診者台帳」に 健診者ID 団体ID カルテNo 健診者氏名・・・
テーブル「検査データ台帳」に 検査データID カルテNo 採取日・・・

 があり テーブル「団体台帳」 と テーブル「健診者台帳」 は 団体ID 
     テーブル「健診者台帳」 と テーブル「検査データ台帳」 はカルテNo で紐付けしてあります。

これらのテーブルから
 団体名 → 採取日 → 検査人数 を算出したいと思い、クエリをつくってグループ化したりネットサーフィンをしていろいろと試しているのですがうまくできません。どのようにすると表示されるようになるのかご教授していただけると助かります。

igachan
作成: 2019/04/10 (水) 12:24:06
通報 ...
1

それぞれのテーブルの主キーはどのフィールドになってますか。

集計クエリで、団体名+採取日毎の検査人数を出したいということですか。

2
igachan 2019/04/10 (水) 15:20:43 fdd2e@d14a6

主キーは
テーブル「団体台帳」は 団体ID テーブル「健診者台帳」は 健診者ID テーブル「検査データ台帳」は 検査データID に設定してあります。 

求めたいものは 団体Aは○月○日に△人受診しました。 がわかればいいのですが。

3

主キーは
テーブル「団体台帳」は 団体ID テーブル「健診者台帳」は 健診者ID テーブル「検査データ台帳」は 検査データID に設定してあります。 

それでは、テーブル設計として間違ってますね。

その設計だと、
「健診者台帳」で健診者一人は、複数のカルテNoを持つことが可能、
「検査データ台帳」の検査データID一つにつき複数のカルテNoを持つことが可能、
ということで2つのテーブル関係が多対多の関係になってしまいます。
多対多の関係では結合することができません。(データが増幅されてしまう。)

テーブル同士を結合するときは、どちらかのフィールドが主キーであることが必須だと覚えておいてください。

実際上は、
検診者一人が複数のカルテNoを持つことはありますか。

4
igachan 2019/04/10 (水) 20:14:30 fdd2e@d14a6

ありません。

5

検診者一人が複数のカルテNoを持つことがないのなら、
「検査データ台帳」には、「健診者ID」 を持たせて、
テーブル「健診者台帳」 と テーブル「検査データ台帳」を「健診者ID」でリレーションシップを設定することになります。

そうすれば、集計クエリで3つのテーブルを結合して、
団体ID、採取日 でグループ化して、健診者ID を「カウント」に設定すれば希望の結果が出ると思います。

6
igachan 2019/04/10 (水) 23:40:43 fdd2e@d14a6

丁寧にご指導いただきありがとうございました。無事にできました。