• ベストアンサー

accessのデータベースで一つの項目に70人以上の人

初心者のため、お願いします。 Access2003を使用しています。複数のグループがあります。そのグループを掛け持ちしている方が何人もいます。そこで、名前を入れるとどのグループに属しているのかを引いてくるものを作りたいと思います。 まずはテーブルをデザインビューで作成しナンバー(主キー)、グループ名ここで、グループメンバーを羅列すると約80人ものメンバーを項目としてグループ員1、2・・としなければなりません。 グループ毎にテーブルを作ってグループ員名を書くほうが良いのでしょうか。 良い方法をお教えください。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#42041
noname#42041
回答No.1

グループ(No、グループ名)のテーブル 人(No、指名)のテーブル グループと人(グループNo、人No)のテーブル でどうでしょう?

dash_iiko
質問者

補足

早速のお返事ありがとうございます。ぜひ、やってみます。

その他の回答 (3)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

>複数のグループがあります。そのグループを掛け持ちしている方が何人もいます こういう関係をグループと人とが多対多の関係にあるといいます >グループメンバーを羅列すると これは絶対にやってはいけません テーブル作成の基本原則に違反します 多対多の関係のときのテーブル作成の基本は [グループマスタ](グループID、グループ名、内容、・・・) [人名表](人名コード、氏名、性別、生年月日、住所、電話、・・・) [構成員表](グループID、人名コード) 構成員表は縦に長いものになります

dash_iiko
質問者

補足

早速のお返事、ありがとうございます。やってみます。

noname#140971
noname#140971
回答No.3

<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>の販売先一覧のようなもの。 こういう考えでどうでしょうか?

dash_iiko
質問者

補足

早速のお返事ありがとうございます。これは、Access VBAで作ったものですね。とても勉強になります。ありがとうございます。使わせていただきます。

noname#42041
noname#42041
回答No.2

No1です。 指名→氏名の間違いです。失礼しました。