- ベストアンサー
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月の活動者だと、 井上さんと佐藤さんを抽出したいのです。 よろしくお願いします。
- みんなの回答 (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#)); でも同様の結果を返してくれます。 もどちらでもお望みの抽出が出来ます。
その他の回答 (7)
#5のSQLの方間違っていました。 SELECT [テーブルA].開始日, [テーブルA].終了日, [テーブルA].名前 FROM 名前 WHERE ((([テーブルA].開始日)<=#10/31/2005#) AND (([テーブルA].終了日)>=#10/1/2005#));
お礼
ありがとうございました! 大変参考になりました。 何度もありがとうございました。
すみません、No.1の回答は間違いです。 開始日<=2005/10/31、終了日>=2005/10/1、を抽出条件に設定するのだと思います。
お礼
ありがとうございました! 大変参考になりました。 いろいろやってみます。
QBEだと 開始日が <=#2005/10/31# 終了日が >=#2005/10/01# SQLだと SELECT [テーブルA].開始日, [テーブルA].終了日, [テーブルA].名前 FROM テーブルA WHERE ((([テーブルA].終了日)>=#10/1/2005#)); でもOKかもです。
すみません。#2はちがっています。(;.;)
- O_cyan
- ベストアンサー率59% (745/1260)
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より後の人 という抽出条件でできます。
>クエリで、「2005/10/01~31まで活動した人」 フィールド:終了日 テーブル:テーブルA 抽出条件: >=#2005/10/01# または: <=#2005/10/31# でどうでしょうか?
終了日が11月1日以降の人を抽出すれば、10月31日まで活動した人がピックアップされるのではないでしょうか?
お礼
ありがとうございました! 大変参考になりました。