- ベストアンサー
クエリの抽出方法について
Ms-Accessのクエリの抽出条件の記述方法に関する質問です。 そもそも不可能なことかもしれないのですが、質問させていただきます。 T_時間割:年度、科目キー、曜日コード、時限コード、教員コード、・・・ T_科目:年度、科目キー、単位、・・・ T_教員:教員コード、教員名、・・・ cd曜日:曜日コード、曜日名称、・・・ cd時限:時限コード、時限名称、・・・ といったテーブルをもとにクエリを作成します。 1行目の抽出条件:曜日コード:1 2行目の抽出条件:単位:2 とし、3行目の抽出条件にクエリのもとになっていないテーブル ↓↓ T_受講者なし科目:年度、科目キー、・・・ の科目キーを指定したいのですが、どうにも抽出条件の記述方法がわかりません。 DLookUpを使うと、「T_受講者なし科目」の1行目のフィールド値のみが抽出条件となってしまいます。 「T_受講者なし科目:科目キー」の全てのフィールド値を抽出条件とする場合、どのようにすればいいのでしょうか?? よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
DLookupはたまたま最初にも見つかった値ひとつしか返しません 該当するものが複数あるときにはサブクエリを使います 科目キーの抽出条件欄に In (select 科目キー from T_受講者なし科目 where T_受講者なし科目.年度=T_時間割.年度)
その他の回答 (1)
- noah7150
- ベストアンサー率46% (116/251)
文章を読む限りではDLookUpを使う?って云うのが理解できません。 何を抽出しようとしているのかが? 単純にT_受講者なし科目を参照テーブルに加え、T_時間割:年度、科目キーと結合するだけでは? 同一行が複数でるならクエリーのプロパティーで固有の値とかレコードを選択する。 もしくはCHRONOS_0さんの回答のようにサブクエリ(副問合せ)で T_時間割:科目キー: in (SELECT ...) または フィールド名 | True 条件 | exists(select * from T_受講者なし科目 where T_受講者なし科目.年度=T_時間割.年度 and T_受講者なし科目.科目キー = T_時間割.科目キー) など色々方法はあると思います。 現状のクエリーSQLが見えればもっと分かると思うけど
お礼
ご回答ありがとうございました。 言葉足らずで申し訳ございません。 >文章を読む限りではDLookUpを使う? > クエリの抽出条件の1つとして、 =DLookUp("科目キー","T_受講者なし科目") と記述してみました。 >T_時間割:年度、科目キーと結合するだけでは? > T_受講者なし科目を参照テーブルにして、結合するすると別の抽出条件を満たしているレコードが抽出されなくなってしまい、あれやこれや試してみました。 SQLは未踏の地でしたが、少しずつ勉強していきます。 ご助言ありがとうございました。
お礼
ご回答ありがとうございました。 抽出に成功しました! サブクエリというのは使ったことがなかったので、これを機会に 勉強してみようと思います。 ありがとうございました!