• ベストアンサー

履修者名簿の作成と生徒の履修科目一覧の作成について

各生徒の受講をする科目の番号が科目コードとして入力されてある表、および科目コードと科目名が対応した表があります(図を参照してください) そこから各科目の履修生徒一覧の表および各生徒ごとの履修科目リストの表を出力したいのですが、どのようにしてリレーションを組むなど分からないところがあって質問しました。 使用しているソフトはアクセスです。(画像はアクセス2003ですが、普段は2007を活用しています) 詳しい方教えていただけるとありがたいです。よろしくお願いします。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.3

#1です > 上記のような入力もあるんだなあと思いました。 #1で添付した図(クロス集計)は、【表示】するだけです。 入力は別途、テーブル「T履修」に対して行います。 要は、「T履修」の構成(#2さんので言えば、受講テーブル)にしておくと、 いかようにでも展開できるという事を知っていただければ。 空きが無いように、左から詰めて表示(#2さんが書かれてますね) 私が紹介したのは、科目名がフィールド名になって、該当のところに ○ がある。 この ○ を使ったやり方だと、そこそこ手抜きできそうです。 例えば、これを、Excel 出力して、後は担当者に配布して、 見たいところ・・・・ ○ でフィルタすれば良いからね・・・とか言っとけば・・ (担当以外のところを見せる・・・これが良いのかどうかわかりませんが) クロス集計を使わなくても、生徒ごと、科目ごとの表示は容易にできますよね。

jugyou1
質問者

お礼

返信遅くなりました。回答ありがとうございます。アクセスでは難しいような気がしましたので手作業でやってみます。

その他の回答 (2)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

添付図の上のテーブルはExcel的と言いますか設計が良くありません。 正規化がされていないので、このまま進められても非常に苦労すると思いますよ。 似た事例で説明されているので読んでみてください。 http://support.microsoft.com/kb/283878/ja このような設計であれば 学生テーブル 学生番号 主キー 氏名 性別 住所 ・・・ 例 1,田中 角栄 ・・・ 2,鈴木 善幸 ・・・ 3,佐藤 栄作 ・・・ 科目テーブル 科目番号 主キー 科目名 ・・・ 例 1,国語 ・・・ 2,算数 ・・・ 3,理科 ・・・ 4,社会 ・・・ 受講テーブル 学生番号 科目番号 例 1,2 1,1 2,3 なら学生ごとの受講科目一覧はクエリで クエリ1のSQLビュー SELECT 受講テーブル.学生番号, 学生テーブル.氏名, 受講テーブル.科目番号, 科目テーブル.科目名 FROM (受講テーブル INNER JOIN 学生テーブル ON 受講テーブル.学生番号 = 学生テーブル.学生番号) INNER JOIN 科目テーブル ON 受講テーブル.科目番号 = 科目テーブル.科目番号; このクエリ1を元にもう一つクエリを作ります クエリ2のSQLビュー TRANSFORM First([クエリ1].科目名 & " " & 科目番号) AS 科目名の先頭 SELECT [クエリ1].学生番号, [クエリ1].氏名, Count(*) AS 科目数 FROM クエリ1 GROUP BY [クエリ1].学生番号, [クエリ1].氏名 ORDER BY [クエリ1].学生番号 PIVOT '科目' & DCount("*","クエリ1","学生番号 = " & 学生番号 & " And 科目番号 <= " & 科目番号); クエリ2の結果 学生番号| 氏名 |科目数|科目1 |科目2 1 |田中 角栄| 2|国語 1|算数 2 2 |鈴木 善幸| 1|理科 3| のようになります。

jugyou1
質問者

お礼

返信遅くなりました。ありがとうございます。上記の方法で作成ができるようになりました。また分からないところがあれば、補足入力にて相談させてください。

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

> どのようにしてリレーションを組むなど分からないところがあって ということであれば、 現状のテーブル名/フィールド名は、詳しく提示する必要があると思います。 添付図の様なものを考え付きますけど、このような表示では不可でしょうか。 (それなりのテーブルを作って、クロス集計で表示するようにしています) 履修状況が添付図中央「T履修」の様な構成になっていれば、 各生徒ごと、科目ごとの抽出は容易だと思います。 「T履修」の様な構成になっていなければ、この構成になるように、 UNION ALL 等使用し構成しなおしてから条件を与えて抽出します。 (たぶん、この方が楽) このやり方は、以下を雰囲気で参照してください。 ACCESSでフィールドと行を入替える方法 http://oshiete1.goo.ne.jp/qa5704818.html

jugyou1
質問者

お礼

返信遅くなりました。ありがとうございます。上記のような入力もあるんだなあと思いました。実践をしてみて参考にさせていただきます。

関連するQ&A