- ベストアンサー
アクセスで片方のテーブルを優先して抽出する方法
アクセスのデータ抽出で質問です。 画像のように「テーブル1」と「テーブル2」があり、クエリで「結果」のようにデータを抽出したいです。 一応出来てはいるのですが、もっとすっきりしたやり方があれば教えて下さい。 <やりたいこと> ・テーブル1とテーブル2のフィールド2を比較し、フィールド1を基準としてテーブル2にデータがあればそちらを抽出、なければテーブル1から抽出したい <現在のやり方> 1)テーブル1とテーブル2の差分クエリを作成 2)1)の差分クエリとテーブル2のユニオンクエリを作成 上記以外のスマートなやり方があれば是非知りたいと思っております。 よろしくお願いいたします。
- shima-008
- お礼率74% (29/39)
- Access(アクセス)
- 回答数1
- ありがとう数2
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
テーブル1とテーブル2をフィールド1で連結するクエリで、テーブル1のすべてを含める矢印にします。 クエリに出力するフィールドは、テーブル1のフィールド1とフィールド2:演算、の形にします。 演算の部分は、下記のように書くとできます。 IIF([テーブル2].[フィールド2] is null,[テーブル1].[フィールド2],[テーブル2].[フィールド2])
関連するQ&A
- アクセスのテーブルの差分の抽出について
アクセスの初心者です。今、仕事でデーターの差分の抽出の仕方についてわからず困っています。 2つのテーブルがあります。 テーブルには100以上の項目と500件ほどのレコードがそれぞれ入っています。 この2つのテーブルを比較して差分を出したいのですが方法が思いつきません。 出したいものは、テーブル1とテーブル2の共通のIDを比較し、 テーブル1からテーブル2で変更、追加されたものを出したいのです。 レコードの追加だけなら差分クエリを利用してやれると思うのですが、 100以上の全フィールドをそれぞれ比較するとなるとどうすれば良いのかわからないのです。 2つのテーブルの項目は基本一緒ですが、追加されたり、変更されたりします。 もともとはエクセルのデータで毎週やりとりされるもので、 エクセル上で手作業で、 シート1とシート2でマッチングを行い、シート3に追加、変更されたものを書き出しています。 100列ほどの項目も追加や変更されるので、前回データと今回データで (1)列の比較をして2つの列数を揃えてから、 (2)KEYになる列でVLOOKUP関数を使い、追加されたデータをよけて、 (3)前回データと今回データが一緒のデーター並べ替え、揃えて、シートを比較して変更、追加を探す という作業を行っています。 データー数が多く、エクセルでは限界がでてきました。 また、アクセスを使えば簡単にできる。と言われましたが、 まだまだ初心者のため、この大量のデータをどう処理すればいいのかわかりません。 質問は、 (1)アクセスで100項目以上あるテーブルのそれぞれの差分をだすことができるのでしょうか? (2)その方法はどうすればよいのでしょうか? また、アクセス初心者でも勉強すればすぐにできるのでしょうか? と、いうことです。 会社に迷惑をかけないためにも、可能、不可能を判断したいです。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- アクセスで重複データの抽出について
アクセスで添付画像のようなテーブルがあり、重複データの抽出を行いたいです。 抽出結果は 120 0 となるようにしたいです。 つまり、 ・フィールド1を基準に、フィールド2が全て0だった場合のみ抽出する という条件です。 どのように行えばよいか、お分かりの方お教え下さい。 よろしくお願いいたします。
- 締切済み
- その他MS Office製品
- Access 抽出クエリーについての条件
先の投稿に重複しますが、 それぞれ異なるテーブルについて、 クエリーで、、 Between #5:00# And #19:00# Between 500 And 1900 上記の方法等で同じ数値ではなく、 期間に幅をもたせて一致としそれぞれの 一致データを抽出するクエリーは つくれますか? もちろん抽出対象のテーブル、列はそれぞれ同じ書式です。 > between関数を使って、 フィールドのデータ型が日付/時刻型の場合 抽出条件欄に、 > 5:00から19:00を抽出したい、 Between #5:00# And #19:00# > 5:00から25:00を抽出したい、 Between #5:00# And #23:59# OR Between #0:00# And #1:00# Access の日付/時刻型では、25:00 というような表現はできないので、上記のように分割することになります。 > また上記がテキストだった場合も、 > 500から1900を抽出したい フィールドがテキスト型の場合、テキスト比較になり数値比較とは異なる抽出結果になるので、 フィールドに Val([テキスト型フィールド]) と式を設定して数値型に変換します。このの抽出条件に、 Between 500 And 1900 と設定します。 通報する
- 締切済み
- その他MS Office製品
- 【Access】部分一致で不一致データを抽出したい
クエリで2つのテーブルから、不一致データを抽出したいのですが、 完全一致だけでなく部分一致のデータも一致データとして取り除きたいです。 [テーブルA]フィールド1 000-0001 000-0001A 000-0002 000-0003 000-0004 [テーブルB]フィールド2 000-0001 000-0002 というようなデータで、結果は [結果] 000-0003 000-0004 というふうにしたいです。 (000-0001だけでなく000-0001Aというデータも取り除きたいのです。) Access初心者で、クエリウィザードを使用した重複データ抽出、不一致データ抽出、 およびクエリデザインを使用した重複データ抽出が何とかできる程度です。 初心者でも分かるようにご回答いただければ大変助かります。 よろしくお願いいたします。
- 締切済み
- その他MS Office製品
- ACCESS クエリでの抽出の方法について
毎度お世話になっております。 ACCESS2003、SQLSERVER2000を使用しています。 以下のテーブルがあります。 テーブル1 フィールド1 フィールド2 A 10 A 20 A -10 B 1 B 2 B 3 フィールド1をグループ化し、 フィールド2に0より小さい数がある場合はNG、 ない場合はOKと表示したいのです。 希望する結果 フィールド1 フィールド2 A NG B OK 私が考えた方法は、 1.クエリ1(フィールド2が0以下のフィールド1を抽出する)を作成 2.テーブル1とクエリ1をLEFT JOINし、IS NULL ならOK、そうでないならNGを表示 としました。希望した結果は得られましたが、 もっとスマートな方法(一つのクエリでできるような方法)、 または別解をご教授ください。 よろしくお願いします。
- ベストアンサー
- SQL Server
- access2007 クエリで抽出
初心者です。クエリで抽出したのですが、一部のデータが抜け落ちます。抽出条件のフィールドはテキスト型で、元のテーブルでコピペで統一しましたが、同じデータが抜け落ちます。削除してやり直しても同様でした。重複クエリを作成するとこのフィールドが重複して出てきます。どこを直したらいいのか見当がつきません。よろしくお願いします。
- 締切済み
- その他MS Office製品
- アクセスでクエリーによる抽出方法
アクセスでクエリーによる抽出方法を教えてください。 例えばテーブルに フィールド1 フィールド2 フィールド3 --------------------------------------- a 100 700 a 200 600 a 300 700 とします。そしてすべてクエリーにとりこみます。ここから抽出するのですが、 フィールド1 フィールド2 フィールド3 --------------------------------------- a 100 700 a 200 600 a 300 700 抽出条件 [問1] または [問2] [問3] 上記はクエリーのデザインビューですが、[問1]、[問2]、[問3]のパラメータすべてを入力するのであれば何も悩みません。しかし例えばフィールド1は"a"でフィールド2は検索せず(検索対象からはずす)、フィールド3は"700"を検索したい場合、[問1]では"a"を入力し、、[問2]は何も入力しなくて、[問3]は"700"を入力し検索すると、 フィールド1 フィールド2 フィールド3 --------------------------------------- a 100 700 b 200 600 c 300 700 となるのです。どうにかして フィールド1 フィールド2 フィールド3 -------------------------------------- a 100 700 というような検索結果をだしたいのです。 アクセス初心者です。お願いします。
- ベストアンサー
- オフィス系ソフト
- 抽出条件に応じてテーブルを作り分ける方法
抽出条件テーブル(a)があり、抽出条件が参照するテーブル(b)がある。(a)には複数の抽出条件が登録され、(a)を参照しつつ、(b)から抽出されるテーブル(c)を抽出条件に応じて複数作成したい。つまり、(a)に登録された抽出条件の数だけテーブル(c)が作成される。 これをクエリで実行できる方法をご教示願いたい。 なお、(b)からデータを抽出する場合、上記の抽出条件テーブル(a)に代えて、クエリ内に抽出条件を20~30個記述する方法でも可。 Access2010を使用しています。VBAは使用しません。
- 締切済み
- オフィス系ソフト
- MS accessで2つのテーブルを比較したい
数々この質問は出ているのですが、『不一致クエリウィザード』でやっても上手くいかないので、こちらで質問させていただくことにしました。 比較したいデータは、フィールドの名前が異なる2つのテーブルがあって、その比較したいフィールド数は120になります。 同一フィールドは「FID」「laa」というフィールドです。 一応自分で『不一致クエリウィザード』でやってみた手順としては以下の通りになります。 1.『不一致クエリウィザード』をクリック 2.どちらかのテーブルを選択(レコード抽出テーブルや比較するテーブルなど) 3.関連付けフィールドは、2つのテーブルで同じものを選択 (「FID」「laa」を選択) 4.結果を表示するフィールドを選択(120個全部) 5.「クエリのデザインを編集する」の方にチェックを入れて「完了」 6.クエリのデザインになったら、それぞれの名前は違うけど対応するフィールド同士をつなぐ 7.結合プロパティで2番ないし3番を選択 8.それを全部のフィールドにした ↓ すると「クエリが複雑すぎます」とエラーメッセージが出てしまった。 一体どうすればよいのでしょうか? なにぶん初心者ですので、よろしくお願いします。 ※もしかして、フィールド名が異なっているのはダメなのでしょうか?
- ベストアンサー
- その他MS Office製品
- Accessでの抽出について
Accessで下記のようなテーブルがあるとします。 フィールド1 フィールド2 フィールド3 ----------------------- Aさん 20 200 Aさん 10 180 Bさん 10 300 Cさん 10 250 Cさん 30 310 条件1・・・フィールド2が「20」 条件2・・・フィールド3が「200」 この条件が当てはまる、フィールド1のデータはすべて抽出というふうにしたいのですが・・・。 (上記のテーブルでは、1件目と2件目のレコードがあてはまります。) どのようにして抽出したらよいでしょうか?よろしくお願いします。 Access2000を使用します。
- ベストアンサー
- その他(データベース)
お礼
ありがとうございます!希望通りの結果がでました。 通常のクエリでIIFで分岐させるのは盲点でした。 とてもすっきりしていて感動しました。