- ベストアンサー
多対多のデータベース作成時の課題と解決方法
- 多対多のデータベースを作成する際の課題として、グループと人の関係性の管理が挙げられます。現在は、グループの情報を管理するテーブル、人の情報を管理するテーブル、そしてグループIDと人IDの組み合わせをテーブルで管理していますが、この方法では手作業が必要な問題があります。そのため、データを一覧に出力する方法やグループ毎の平均点を計算する方法について検討しています。
- データ一覧の出力方法としては、紙ベースでの写し作業が現状の解決策ですが、より効率的な方法を検討しています。例えば、レポートやフォームを活用することで、自動的にデータを出力することが可能です。これにより、手作業の負担を軽減することができます。
- 平均点の計算方法については、現在はグループIDと人IDの組み合わせを管理するテーブルに点数を持っていますが、より効率的な方法を模索しています。クエリやフォームを利用して、平均点を計算し、グループを管理しているテーブルに書き込むことができれば、作業の効率化に繋がります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
まず、以下の3つのテーブルと各項目を前提とします。 (1) T_グループ グループID 平均点 (2) T_人 人ID (3) T_組み合わせ 人ID グループID 点数 1番目の質問について 以下をコピーし、クエリーのSQLビューでペーストして下さい。ペーストした後はデザインビューに戻して構いません。 SELECT T_人.人ID, DMax("[グループID]","T_組み合わせ","[T_組み合わせ]![人ID]='" & [人ID] & "'") AS グループ1, DMax("[グループID]","T_組み合わせ","[T_組み合わせ]![人ID]='" & [人ID] & "' AND [グループID] < '" & [グループ1] & "'") AS グループ2, DMax("[グループID]","T_組み合わせ","[T_組み合わせ]![人ID]='" & [人ID] & "' AND [グループID] < '" & [グループ2] & "'") AS グループ3, DMax("[グループID]","T_組み合わせ","[T_組み合わせ]![人ID]='" & [人ID] & "' AND [グループID] < '" & [グループ3] & "'") AS グループ4, DMax("[グループID]","T_組み合わせ","[T_組み合わせ]![人ID]='" & [人ID] & "' AND [グループID] < '" & [グループ4] & "'") AS グループ5, DMax("[グループID]","T_組み合わせ","[T_組み合わせ]![人ID]='" & [人ID] & "' AND [グループID] < '" & [グループ5] & "'") AS グループ6, DMax("[グループID]","T_組み合わせ","[T_組み合わせ]![人ID]='" & [人ID] & "' AND [グループID] < '" & [グループ6] & "'") AS グループ7 FROM T_人; このクエリーを実行すると、各人の所属グループが横に並びますが、IDの降順になりますのでご注意ください。 2番目の質問について 以下をコピーし、クエリーのSQLビューでペーストして下さい。ペーストした後はデザインビューに戻して構いません。 UPDATE T_グループ SET T_グループ.平均点 = DAvg("[点数]","[T_組み合わせ]","[グループID]='" & [グループID] & "'"); このクエリーを実行すると、T_組み合わせテーブルのグループごとの平均値で、T_グループを更新します。 以上
その他の回答 (1)
No.1の続きです。 >DMaxをDMinに、<を>にしたら昇順にできるのかと思いましたが 以下のクロス集計クエリーならば、昇順にできますが、若干、ご希望のフォーマットとは異なります。 TRANSFORM First(T_組み合わせ.グループID) AS グループIDの先頭 SELECT T_組み合わせ.人ID FROM T_組み合わせ GROUP BY T_組み合わせ.人ID PIVOT T_組み合わせ.グループID;
お礼
再びのご回答ありがとうございます。なるほど、色々なやり方があるのですね。 まずはNo.1のやり方で運用してみて、不都合があるようだったらこちらも試してみたいと思います。 再び感動しました。
お礼
感動しました!!! ところで、浅知恵でDMaxをDMinに、<を>にしたら昇順にできるのかと思いましたが、そういう訳でもないのですね。降順でも問題ないと思いますので、活用します。本当にありがとうございました。