プロが教える店舗&オフィスのセキュリティ対策術

初めて質問させていただきます。

Microsoft Access 2010で、音楽教室の過去何年分かの名簿を作ろうとしています。

例えば、2000年に入室し2003年に退室、また2005年に再入室し2008年に退室したという生徒がいたとします。

「在籍」という項目を作り、『2000~2003,2005~2008』というような表記にして、例えば”2000年から2005年までに在籍していた生徒”の抽出の時に出てくるようにしたいのですが、どのようにすれば出来ますでしょうか。

習い事の教室なので、同じ1人の生徒が入ったり出たりを繰り返したりして、まとめ方に悩んでいます。

Access初心者です。

よろしくお願い致します。

A 回答 (2件)

このような入退室を繰り返す場合の一般的な方法は、「在籍」という項目を作るのではなく、


次のような2つのテーブルを作ります。


1つは、生徒の入退室以外の情報を記録した生徒テーブル
生徒テーブル
  生徒ID
  氏名
  住所 など


もう1つは、生徒の入退室年を記録した入退室テーブル
入退室テーブル
  生徒ID
  入室年
  退室年(在籍中は9999とする)


1人の生徒に対し、生徒テーブルには1件、入退室テーブルには複数件登録されることになります。


2000年から2005年までに在籍していた生徒は、次のようなSQLを実行すれば抽出できます。

SELECT DISTINCT 氏名 FROM 生徒テーブル,入退室テーブル
WHERE 生徒テーブル.生徒ID=入退室テーブル.生徒ID And 入室日<=2005 And 退室日>=2000
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

今朝、No.1の方の方法で挑戦し、出来ました!
これから、No.2の方の方法もやってみます!

まだAccessを始めたばかりで、2つのテーブルにするという発想がまず浮かびませんでした。
周りに詳しい人間もおらず、作業の出だしでつまずいておりましたので大変助かりました。

ベストアンサーはお1人しか選べないということですが、お2人とも、ありがとうございました。

お礼日時:2012/09/30 11:14

テーブルを「名簿」(主キーID,氏名),「在籍」(主キー入室年度,ID)として,IDで2つのテーブルにリレーションを設定する.



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

ご回答ありがとうございました。

今朝、No.1の方の方法で挑戦し、出来ました!
これから、No.2の方の方法もやってみます!

まだAccessを始めたばかりで、2つのテーブルにするという発想がまず浮かびませんでした。
周りに詳しい人間もおらず、作業の出だしでつまずいておりましたので大変助かりました。

ベストアンサーはお1人しか選べないということですが、お2人とも、ありがとうございました。

お礼日時:2012/09/30 11:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!