hatenaさん、みなさん、御世話になっております。
テーブル「団体台帳」に 団体ID 団体名・・・
テーブル「健診者台帳」に 健診者ID 団体ID カルテNo 健診者氏名・・・
テーブル「検査データ台帳」に 検査データID カルテNo 採取日・・・
があり テーブル「団体台帳」 と テーブル「健診者台帳」 は 団体ID
テーブル「健診者台帳」 と テーブル「検査データ台帳」 はカルテNo で紐付けしてあります。
これらのテーブルから
団体名 → 採取日 → 検査人数 を算出したいと思い、クエリをつくってグループ化したりネットサーフィンをしていろいろと試しているのですがうまくできません。どのようにすると表示されるようになるのかご教授していただけると助かります。
それぞれのテーブルの主キーはどのフィールドになってますか。
集計クエリで、団体名+採取日毎の検査人数を出したいということですか。
主キーは
テーブル「団体台帳」は 団体ID テーブル「健診者台帳」は 健診者ID テーブル「検査データ台帳」は 検査データID に設定してあります。
求めたいものは 団体Aは○月○日に△人受診しました。 がわかればいいのですが。
それでは、テーブル設計として間違ってますね。
その設計だと、
「健診者台帳」で健診者一人は、複数のカルテNoを持つことが可能、
「検査データ台帳」の検査データID一つにつき複数のカルテNoを持つことが可能、
ということで2つのテーブル関係が多対多の関係になってしまいます。
多対多の関係では結合することができません。(データが増幅されてしまう。)
テーブル同士を結合するときは、どちらかのフィールドが主キーであることが必須だと覚えておいてください。
実際上は、
検診者一人が複数のカルテNoを持つことはありますか。
ありません。
検診者一人が複数のカルテNoを持つことがないのなら、
「検査データ台帳」には、「健診者ID」 を持たせて、
テーブル「健診者台帳」 と テーブル「検査データ台帳」を「健診者ID」でリレーションシップを設定することになります。
そうすれば、集計クエリで3つのテーブルを結合して、
団体ID、採取日 でグループ化して、健診者ID を「カウント」に設定すれば希望の結果が出ると思います。
丁寧にご指導いただきありがとうございました。無事にできました。