- ベストアンサー
アクセスのクエリ抽出の仕方について教えて下さい。
アクセスのクエリ抽出の仕方について教えて下さい。 テーブルに5支店のデータを入れており、クエリでまた5支店の“未入力”とテーブルに入力したものを抽出したものを作っています。 そこで5つの支店の“未入力”を一気に見たいのでもう1つクエリを作りたいのです。 ですがクエリを作り、5支店の備考欄(備考欄に未入力といれています)を選択しフィールドに入れて「!」を教えても何も繁栄されません。 どうしたら5つのクエリのデータを1つのクエリで見れるのでしょうか? 分かりやすく教えていただけると幸いです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
> テーブルに5支店のデータを入れており、 このテーブルですが、5つの支店ごとにフィールド(Excelでいうところの列(=縦))を 用意している、ということでよろしいでしょうか。 上記推測が正しければ、クエリのデザインビューで、添付画像のように条件を 指定してやれば、ご希望の結果が得られるかと思います。 【説明】 『抽出条件:』と『または:』の欄で、同じ行に抽出条件を指定すると、双方を 満たしたレコードのみが抽出されます(=And検索)。 一方、別の行に抽出条件を指定した場合は、どれか1つの条件を満たすもの 全てが抽出されます(=Or検索)。 今回のご質問の件では「5支店のうち、未入力と記録されたもの全て」の抽出が ご希望と思われますので、Or検索を行うことになります。 ~~~~~~~~~~~~~【以下余談】~~~~~~~~~~~~~ もしもテーブルの構成が推測の通りだった場合、データベースとしてはあまりよい 構成ではありません。 (例えば、ご質問のように支店が5つあると、既に作成されたように支店ごとのクエリ が必要になったり、添付画像のように支店ごとに条件を重複指定したりする 必要が発生したりします) ですので、もしも余力があるようでしたら、『正規化』について検討してみることを お勧めします。 テーブルの『正規化』: http://www.annyys.net/html/kihon_002.htm http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_1.html 例えば、現在のテーブルのフィールドとレコードが、それぞれ 【入金情報テーブル】 ID 支店1備考 支店1入金日 支店1入金額 支店2入金日、・・・ 1 期日前入金 2010/09/04 \123,456 未入力 2 未入力 ・・・ といった形だとすると、正規化後は 【入金情報テーブルR】 ID 支店ID 備考 入金日 入金額 1 2 期日前入金 2010/09/04 \123,456 【支店テーブルR】 店舗ID 店名 住所 ・・・ 1 本店 ・・・ 2 支店1 ・・・ 3 支店2 ・・・ といった形になるかと思います。
その他の回答 (5)
- shinkami
- ベストアンサー率43% (179/411)
勘違いだったらごめんなさい 一つのテーブルから5支店のクエリーができていますよね クエリーの抽出条件欄には "A支店","B支店","C支店" 等となっていますね 一つのクエリーのこの部分を[支店名]とするとクエリーを立ち上げたときに 支店名を聞いてきます。 支店の抽出条件を設定しなければ全支店が対象になります。 支店の並び替え欄を昇順ににしておきます
- piroin654
- ベストアンサー率75% (692/917)
追加ですが、直接クエリをユニオンクエリの 中で指定することもできます。たとえば、 SELECT クエリ1.ID, クエリ1.A, クエリ1.B, クエリ1.C, クエリ1.備考欄 FROM クエリ1 UNION SELECT クエリ2.ID, クエリ2.A, クエリ2.B, クエリ2.C, クエリ2.備考欄 FROM クエリ2; ・ ・ ・ UNION SELECT クエリ5.ID, クエリ5.A, クエリ5.B, クエリ5.C, クエリ5.備考欄 FROM クエリ5; あるいは、 SELECT クエリ1.* FROM クエリ1 UNION SELECT クエリ2.* FROM クエリ2 ・ ・ ・ UNION SELECT クエリ5.* FROM クエリ5; 下のほうは、クエリのフィールド数が同じ 場合に限りすべてのフィールドを表示する 方法です。 いずれの場合も、#3で説明したように すべてのクエリに設定をしておきます。
- piroin654
- ベストアンサー率75% (692/917)
>どうしたら5つのクエリのデータを1つのクエリで見れるのでしょうか? だけでなく、備考欄が未入力と記入されているレコードを まとめて表示したいということでしたので、 各クエリのデザインビューで新しいフィールドに IIf([備考欄],"未入力") と、記入し、抽出条件を True として、表示のチェックをはずして保存します。 これを5つのクエリすべてに同じことを設定します。 設定したら保存します。 そのうえで、#2で提示したユニオンクエリを作ります。 たとえば、テーブルの項目をID、A、B、C、備考欄、とします。 テーブル名をT1、T2、T3・・・T5とします。ユニオンクエリは、 SELECT T1.ID, T1.A, T1.B, T1.C, T1.備考欄 FROM T1 WHERE (((IIf([備考欄],"未入力"))=True)) UNION SELECT T2.ID, T2.A, T2.B, T2.C, T2.備考欄 FROM T2 WHERE (((IIf([備考欄],"未入力"))=True)) UNION SELECT T3.ID, T3.A, T3.B, T3.C, T3.備考欄 FROM T3 WHERE (((IIf([備考欄],"未入力"))=True)) ・ ・ ・ UNION SELECT T5.ID, T5.A, T5.B, T5.C, T5.備考欄 FROM T5 WHERE (((IIf([備考欄],"未入力"))=True)); と、このような感じ。途中は諸略していますが、 T1からT5のテーブルで作ったクエリのSQL文をいれます。 ただし、SQL文の終わりを示す;は一番最後だけに 入れます。 ユニオンクエリは各SQLで表示されるクエリの フィールドの数が同じである必要があります。 といってもあまり難しく考える必要はあいません。 表示したいフィールドの数を同じにすれば いいだけです。
- piroin654
- ベストアンサー率75% (692/917)
>どうしたら5つのクエリのデータを1つのクエリで見れるのでしょうか? ユニオンクエリ クエリ1のSQL文 UNION クエリ2のSQL文 UNION . . . UNION クエリ5のSQL文; のような感じ。
- layy
- ベストアンサー率23% (292/1222)
1つのテーブルに対し A支店の未入力の抽出クエリ B支店の未入力の抽出クエリ C支店の未入力の抽出クエリ D支店の未入力の抽出クエリ E支店の未入力の抽出クエリ があって結果を1つで見たい、そんな感じでしょうか。 普通テーブルを元にクエリを作りますが、クエリの結果を元にしたクエリもできます。 クエリの結果はテーブル作成クエリで新しいテーブルで残すことができ、さらに追加クエリで2つ以上のクエリ結果を1つにすることもできます。 この2機能を理解し考えてみてはどうでしょう。 教わったやり方そのままで終わらせることなく、自分で理解できてから実施することをオススメします。 !でダメなのは抽出条件を見直すことくらいです。
お礼
難しそうですがやってみます。 ありがとうございました。