• ベストアンサー

accessである期間にいる人のクエリ抽出をしたい

access2002を使っています。 テーブルAで、それぞれの人の活動開始日と終了日のデータを もっています。 名前    開始日    終了日 ─────────────────── 井上さん  2005/07/01  2005/11/30 渡辺さん  2005/09/22  2005/09/23 佐藤さん  2005/10/03  2005/10/05  ・  ・  クエリで、「2005/10/01~31まで活動した人」 (テーブルAで、活動期間の中に10月が1日でも含まれている人」を 抽出したいのですが、どうすればよいのかわからず困っています。 テーブルAで言えば、10月の活動者だと、 井上さんと佐藤さんを抽出したいのです。 よろしくお願いします。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.8

失礼しました。ざっと書いたもんで・・条件を間違えました。あと<>の次に=が抜けてました。付け加えてください。 SELECT テーブルA.名前, テーブルA.開始日, テーブルA.終了日 FROM テーブルA WHERE (((ベーステーブル.開始日<=#2005/10/31#) AND ((ベーステーブル.終了日)>=#2005/10/01#)); です。 SQLは#2005/10/31#のように記述してもJetが勝手に#10/31/2005#に書き換えてくれます。 抽出条件は WHERE (((テーブルA.開始日) Between #2005/10/01# And #2005/10/31#)) OR (((テーブルA.開始日)<=#2005/10/01#) AND ((テーブルA.終了日)>=#2005/10/01#)); でも同様の結果を返してくれます。 もどちらでもお望みの抽出が出来ます。

sacsac5
質問者

お礼

ありがとうございました! 大変参考になりました。

その他の回答 (7)

noname#27115
noname#27115
回答No.7

#5のSQLの方間違っていました。 SELECT [テーブルA].開始日, [テーブルA].終了日, [テーブルA].名前 FROM 名前 WHERE ((([テーブルA].開始日)<=#10/31/2005#) AND (([テーブルA].終了日)>=#10/1/2005#));

sacsac5
質問者

お礼

ありがとうございました! 大変参考になりました。 何度もありがとうございました。

noname#57890
noname#57890
回答No.6

すみません、No.1の回答は間違いです。 開始日<=2005/10/31、終了日>=2005/10/1、を抽出条件に設定するのだと思います。

sacsac5
質問者

お礼

ありがとうございました! 大変参考になりました。 いろいろやってみます。

noname#27115
noname#27115
回答No.5

QBEだと 開始日が <=#2005/10/31# 終了日が >=#2005/10/01# SQLだと SELECT [テーブルA].開始日, [テーブルA].終了日, [テーブルA].名前 FROM テーブルA WHERE ((([テーブルA].終了日)>=#10/1/2005#)); でもOKかもです。

noname#27115
noname#27115
回答No.4

すみません。#2はちがっています。(;.;)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

SQLビューでクエリを作るなら下記をコピーしてください。 SELECT テーブルA.名前, テーブルA.開始日, テーブルA.終了日 FROM テーブルA WHERE (((テーブルA.開始日)>#2005/10/01#)) OR (((テーブルA.開始日)<#2005/10/31#) AND ((テーブルA.終了日)>#2005/10/31#)); これで抽出できます。 クエリウィザードで作るなら テーブルAを元にクエリウィザードでクエリを作り開始日の抽出条件に>#2005/10/1#を入れます。 開始日の「または」の欄に<#2005/10/31# 終了日の抽出条件の「または」の欄に>#2005/10/31#を入れればできます。 開始日が2005/10/01より後の人または開始日が2005/10/31より以前で終了日が2005/10/31より後の人 という抽出条件でできます。

noname#27115
noname#27115
回答No.2

>クエリで、「2005/10/01~31まで活動した人」 フィールド:終了日 テーブル:テーブルA 抽出条件: >=#2005/10/01# または: <=#2005/10/31# でどうでしょうか?

noname#57890
noname#57890
回答No.1

終了日が11月1日以降の人を抽出すれば、10月31日まで活動した人がピックアップされるのではないでしょうか?

関連するQ&A

専門家に質問してみよう