• ベストアンサー

Accessでの名簿作成

初めて質問させていただきます。 Microsoft Access 2010で、音楽教室の過去何年分かの名簿を作ろうとしています。 例えば、2000年に入室し2003年に退室、また2005年に再入室し2008年に退室したという生徒がいたとします。 「在籍」という項目を作り、『2000~2003,2005~2008』というような表記にして、例えば”2000年から2005年までに在籍していた生徒”の抽出の時に出てくるようにしたいのですが、どのようにすれば出来ますでしょうか。 習い事の教室なので、同じ1人の生徒が入ったり出たりを繰り返したりして、まとめ方に悩んでいます。 Access初心者です。 よろしくお願い致します。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

このような入退室を繰り返す場合の一般的な方法は、「在籍」という項目を作るのではなく、 次のような2つのテーブルを作ります。 1つは、生徒の入退室以外の情報を記録した生徒テーブル 生徒テーブル   生徒ID   氏名   住所 など もう1つは、生徒の入退室年を記録した入退室テーブル 入退室テーブル   生徒ID   入室年   退室年(在籍中は9999とする) 1人の生徒に対し、生徒テーブルには1件、入退室テーブルには複数件登録されることになります。 2000年から2005年までに在籍していた生徒は、次のようなSQLを実行すれば抽出できます。 SELECT DISTINCT 氏名 FROM 生徒テーブル,入退室テーブル WHERE 生徒テーブル.生徒ID=入退室テーブル.生徒ID And 入室日<=2005 And 退室日>=2000

meeaki
質問者

お礼

ご回答ありがとうございました。 今朝、No.1の方の方法で挑戦し、出来ました! これから、No.2の方の方法もやってみます! まだAccessを始めたばかりで、2つのテーブルにするという発想がまず浮かびませんでした。 周りに詳しい人間もおらず、作業の出だしでつまずいておりましたので大変助かりました。 ベストアンサーはお1人しか選べないということですが、お2人とも、ありがとうございました。

その他の回答 (1)

回答No.2

テーブルを「名簿」(主キーID,氏名),「在籍」(主キー入室年度,ID)として,IDで2つのテーブルにリレーションを設定する. 「在籍」テーブルには入室するたびに年度登録として行が追加されていき,Aさんが2000年に入室し,2003年に退室した場合,2000,2001,2002,2003の4行の年度登録が追加されます.こうすればクエリ(名簿.ID,名簿.氏名,在籍.入室年度)を作り,ID,氏名だけを表示し,入室年度のWhere条件に>=2000 AND <=2005を設定し,IDでグループ化すれば,この期間の在籍生徒名簿が出来上がります.

meeaki
質問者

お礼

ご回答ありがとうございました。 今朝、No.1の方の方法で挑戦し、出来ました! これから、No.2の方の方法もやってみます! まだAccessを始めたばかりで、2つのテーブルにするという発想がまず浮かびませんでした。 周りに詳しい人間もおらず、作業の出だしでつまずいておりましたので大変助かりました。 ベストアンサーはお1人しか選べないということですが、お2人とも、ありがとうございました。

関連するQ&A