- ベストアンサー
アドバイスください! クエリについて
こんにちわ! お分かりの方、どうかアドバイスください! 以下でテーブルを作成しています。 「生徒マスターテーブル」 ID,名前 1,山田 2,佐藤 3,山下 4,小泉 「テスト実施内容テーブル」 ID,名前,実施月,テスト結果,テスト内容 1,山田,2006/9月,60,算数 2,佐藤,2006/9月,60,算数 3,山下,2006/9月,60,算数 4,小泉,2006/9月,60,算数 1,山田,2006/10月,, 2,佐藤,2006/10月,, 3,山下,2006/10月,, 4,小泉,2006/10月,, そこでフォームのためのクエリ作成なのですが、 9月,10月を纏めて入力できるクエリを3つ作成しました。 1・9月のクエリ(実施月で抽出) 2・10月のクエリ(実施月で抽出) 3・9月、10月のクエリ しかし、、これって3つもクエリ作成する必要があるのかが疑問です。 できれば一つのクエリで解決したいと考えております。 ちょっとわかりずらくて恐縮ですが、アドバイスいただける方どうか ご教示いただけると非常に助かります。 、、テーブルの設計についても「もうすこし、こうしたほうがいい」 などのアドバイスがいただけるとありがたいです。 どうぞ宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
<生徒マスター> ID 名前 1 山田 2 佐藤 3 山下 4 小泉 <テスト履歴> ID 生徒マスター_ID 実施月 得点 科目 1 1 2006/09 60 算数 2 2 2006/09 60 算数 3 3 2006/09 60 算数 4 4 2006/09 60 算数 5 1 2006/10 10 算数 6 2 2006/10 10 算数 7 3 2006/10 10 算数 8 4 2006/10 10 算数 と、多少、テーブル設計を修正。 1、[ツール]-[リレーションシップ]をクリック。 ・画面を右クリックして2つのテーブルを追加。 ・履歴の生徒のIDと生徒マスターIDを結ぶ。 ・結合の種類は3がよい。 これで、テスト履歴に生徒の名前は必要なくなります。 2、[テスト履歴.生徒マスター_ID]が、[生徒マスター.名前]を表示するには。 ・[テスト履歴]をデザインで開く。 ・列[生徒マスター_ID]をクリック。 ・下段の<ルックアップ>をクリック。 ・表示をコンボボックスに修正。 ・値集合ソースをポイントし[...]をクリック。 ・生徒マスターのID、名前を選択し閉じる。 ・列数=2 ・列幅=0;3 これで、[生徒マスター_ID]列には[生徒マスター.名前]が表示されて選択すれば[生徒マスター_ID]には[ID]が入力されます。 ルックアップ機能付加後の<テスト履歴>を開くと次のようです。 ID 生徒マスター_ID 実施月 得点 科目 1 山田 2006/09 60 算数 2 佐藤 2006/09 60 算数 3 山下 2006/09 60 算数 4 小泉 2006/09 60 算数 5 山田 2006/10 10 算数 6 佐藤 2006/10 10 算数 7 山下 2006/10 10 算数 8 小泉 2006/10 10 算数 3、単純に、まず、クエリを生成。 まず、欄順に、[テスト履歴]だけのクエリを作成します。 これで、生徒の氏名も表示されますので心配いりません。 4、質問の答え。 実質月の検索条件を右クリックしてズーム。 IN ([参照する月を入力して下さい!],[別の月も指定することが出来ます!]) をコピー。 これで、'2006/09'に続き'2006/10'と'抜きで入力すれば2月参照します。 1月でよければ2つめは{Enter}を入力します。
その他の回答 (3)
s_husky です。 X まず、欄順に、[テスト履歴]だけのクエリを作成します。 O まず、単純にに、[テスト履歴]だけのクエリを作成します。
- mshr1962
- ベストアンサー率39% (7417/18945)
フォーム上に期間From,期間Toのテキストボックスとフィルタの実行ボタンを設けて フィルタを設定する方法でも出来ます。
- mircle
- ベストアンサー率16% (67/409)
パラメータークエリにされたらいかがですか? その都度 条件を入れる必要がありますが、1つのクエリで済みます。 1,2の場合 抽出条件のところに 例えば、[実施月で抽出]というパラメータを入れれば可能だと思います。 3の場合も同様にパラメータクエリのOR条件で可能だと思います。
お礼
s_huskyさま 完璧にいつも回答いただき、、本当に感謝しております! 少しはまともなアクセス作成が出来そうです!!