チョコミントアイス

アクセスのクエリ抽出の仕方について教えて下さい。
テーブルに5支店のデータを入れており、クエリでまた5支店の“未入力”とテーブルに入力したものを抽出したものを作っています。

そこで5つの支店の“未入力”を一気に見たいのでもう1つクエリを作りたいのです。
ですがクエリを作り、5支店の備考欄(備考欄に未入力といれています)を選択しフィールドに入れて「!」を教えても何も繁栄されません。

どうしたら5つのクエリのデータを1つのクエリで見れるのでしょうか?
分かりやすく教えていただけると幸いです。

A 回答 (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_enginer0 …

例えば、現在のテーブルのフィールドとレコードが、それぞれ
【入金情報テーブル】
 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 ・・・

といった形になるかと思います。
「アクセスのクエリ抽出の仕方について教えて」の回答画像6
    • good
    • 0
この回答へのお礼

難しそうですがやってみます。
ありがとうございました。

お礼日時:2010/09/25 20:45

勘違いだったらごめんなさい



一つのテーブルから5支店のクエリーができていますよね

クエリーの抽出条件欄には "A支店","B支店","C支店" 等となっていますね
一つのクエリーのこの部分を[支店名]とするとクエリーを立ち上げたときに
支店名を聞いてきます。

支店の抽出条件を設定しなければ全支店が対象になります。
支店の並び替え欄を昇順ににしておきます
    • good
    • 0

追加ですが、直接クエリをユニオンクエリの


中で指定することもできます。たとえば、

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で説明したように
すべてのクエリに設定をしておきます。
    • good
    • 0

>どうしたら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で表示されるクエリの
フィールドの数が同じである必要があります。
といってもあまり難しく考える必要はあいません。
表示したいフィールドの数を同じにすれば
いいだけです。
    • good
    • 0

>どうしたら5つのクエリのデータを1つのクエリで見れるのでしょうか?



ユニオンクエリ

クエリ1のSQL文
UNION
クエリ2のSQL文
UNION
.
.
.
UNION
クエリ5のSQL文;

のような感じ。
    • good
    • 0

1つのテーブルに対し


A支店の未入力の抽出クエリ
B支店の未入力の抽出クエリ
C支店の未入力の抽出クエリ
D支店の未入力の抽出クエリ
E支店の未入力の抽出クエリ
があって結果を1つで見たい、そんな感じでしょうか。


普通テーブルを元にクエリを作りますが、クエリの結果を元にしたクエリもできます。
クエリの結果はテーブル作成クエリで新しいテーブルで残すことができ、さらに追加クエリで2つ以上のクエリ結果を1つにすることもできます。

この2機能を理解し考えてみてはどうでしょう。
教わったやり方そのままで終わらせることなく、自分で理解できてから実施することをオススメします。

!でダメなのは抽出条件を見直すことくらいです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!