- ベストアンサー
accessのデータベースで一つの項目に70人以上の人
初心者のため、お願いします。 Access2003を使用しています。複数のグループがあります。そのグループを掛け持ちしている方が何人もいます。そこで、名前を入れるとどのグループに属しているのかを引いてくるものを作りたいと思います。 まずはテーブルをデザインビューで作成しナンバー(主キー)、グループ名ここで、グループメンバーを羅列すると約80人ものメンバーを項目としてグループ員1、2・・としなければなりません。 グループ毎にテーブルを作ってグループ員名を書くほうが良いのでしょうか。 良い方法をお教えください。お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
グループ(No、グループ名)のテーブル 人(No、指名)のテーブル グループと人(グループNo、人No)のテーブル でどうでしょう?
その他の回答 (3)
- CHRONOS_0
- ベストアンサー率54% (457/838)
>複数のグループがあります。そのグループを掛け持ちしている方が何人もいます こういう関係をグループと人とが多対多の関係にあるといいます >グループメンバーを羅列すると これは絶対にやってはいけません テーブル作成の基本原則に違反します 多対多の関係のときのテーブル作成の基本は [グループマスタ](グループID、グループ名、内容、・・・) [人名表](人名コード、氏名、性別、生年月日、住所、電話、・・・) [構成員表](グループID、人名コード) 構成員表は縦に長いものになります
補足
早速のお返事、ありがとうございます。やってみます。
<Members> ID__MName 1___鈴木 一郎 2___中村 太郎 3___木下 裕子 4___谷中 由美 <Groups> ID__GName 1___A 2___B 3___C 4___D <NameList> Group_ID_______長整数・・・・・・・・SELECT Groups.ID, Groups.GName, * FROM Groups; Member_ID_____長整数・・・・・・・・SELECT Members.ID, Members.MName, * FROM Members; 加入年月日____日付/時刻型 脱会年月日____日付/時刻型 Group_ID__Member_ID___加入年月日___脱会年月日 A____________鈴木 一郎___2007/08/01 A____________中村 太郎___2007/08/01 B____________鈴木 一郎___2007/09/01 C____________木下 裕子___2007/09/01 D____________谷中 由美___2007/10/01 <クエリ> MName______GName 鈴木 一郎__A 鈴木 一郎__B SELECT Members.MName, GROUPs.GName FROM Members INNER JOIN (GROUPs INNER JOIN NameList ON GROUPs.ID = NameList.Group_ID) ON Members.ID = NameList.Member_ID WHERE (((Members.MName) Like '鈴木*')); 最後のクエリを作成したいとの質問かと思います。 <Members>は、いわば商品マスター。 <Groups>は、いわば顧客マスター。 <NameList>は、いわば売上伝票。 クエリは、<Members>の販売先一覧のようなもの。 こういう考えでどうでしょうか?
補足
早速のお返事ありがとうございます。これは、Access VBAで作ったものですね。とても勉強になります。ありがとうございます。使わせていただきます。
No1です。 指名→氏名の間違いです。失礼しました。
補足
早速のお返事ありがとうございます。ぜひ、やってみます。