• 締切済み

Access2000で一致しない値を抽出するには?

仕事でAccess2000を使ってデータベースを作らなければならなくなりました。 Accessはほとんどさわったことがなく、素人です。 どなたかご教授ください。 よろしくお願いします。 テーブルがAとBふたつあります。 テーブルAには建物名Aと住所Aの2つのフィールド、 テーブルBには建物名Bと住所Bの2つのフィールドがあります。 この4つのフィールドでクエリを作成しました。 この中で、 ・AとBで建物名は同じだが住所が違うもの ・AとBで住所は同じだが建物名が違うもの ・どちらか一方にしかない建物名と住所 この3つを抽出したいのですが、抽出条件はどのようにすればいいのでしょうか? クエリで フィールド 建物名A   住所A  建物名B  住所B 抽出条件 <>建物名B  <>住所B とやってみたのですがうまくいきません。 言い換えれば、建物名Aと住所A、建物名Bと住所B、 この2つが完全に一致しているもの以外を抽出したいと思ってます。 どなたか、よろしくお願い致します。

みんなの回答

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.8

どんなクエリを作ったの? 言った通に作ったのならabcdも表示されるはずですが >本当に表示させたい(g h)は表示されません。 だってghはどれとも比較していないのだから当然でしょう IDは比較したいもの同士を結ぶフィールドですよ それに最初のものと仕様が違ってきていますね >フィールド名  建物A 住所A 建物B 住所B >           a     b      a   b >           c     d   c e >           f     g      h   i >ここで抽出したいのは(f,g)(h,i)といった建物、住所とも違うものなのですが いったい何をしたいのかきちんと整理してください

chitoseo
質問者

補足

申し訳ありません。間違えておりました。 言った通りのクエリを作ればabcdも表示されます。 またご指摘の通り、少し自分自身の考えを整理したほうがいい様に思います。 整理してからまた改めて質問させていただきたいと思います。 よろしくお願い致します。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.7

>テーブルAとBではレコード数が違う、また並んでいる順番もバラバラという条件では >教えていただいたものではやはりうまくいかなくて。 うまくいかなかっただけではどうやってどううまくいかなかったのかぜんぜん分かりませんよ レコード数が違っても並び方ばらばらでも問題ありません 要は比較するレコード同志を結びつけるフィールドが必要なのです

chitoseo
質問者

補足

何度も申し訳ありません。補足させていただきます。 教えていただいた通り、それぞれのテーブルのIDを結合させ、 抽出条件に<>建物名 <>住所 とやってみました。 例えば、 テーブルA,Bに下のようなフィールド、レコードがあります。 ID  建物名A 住所A   ID  建物名B 住所B  1    a    b       1     c      d    2   c    d         2     e    f   3    g     h このようなものがあったとすると、クエリを実行すると表示されるのは c d e f だけです。 しかしながら(c d)はテーブルBにありますし、本当に表示させたい (g h)は表示されません。 このような状況です。 何度も申し訳ありません。よろしくお願い致します。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.6

テーブルは下のようなものですね 建物A  住所A  a     b      c     d   f    g      建物B  住所B a     b c e h   i うまくいかない原因は 1レコード目同士、2レコード目同志を比較することを(勝手に)考えているところにあります データベースのテーブルにレコードの順序というものはありませんから 何も指定しないで一つ目のテーブルと2つ目のテーブルを比較すると 全てのレコードを比較します 1レコード目同士を比較したいのなら1レコード目同士を結びつけるフィールドが必要です ID 建物A 住所A 1 a b 2 c d 3 f g ID 建物B 住所B 1 a b 2 c e 3 h i こういうテーブルならクエリでID同士を結合し 建物Aの抽出条件欄に <>[建物B] 住所Aの抽出条件欄に <>[住所B]

chitoseo
質問者

補足

CHRONOS_0 さん 返事が遅くなり申し訳ありません。 上の条件ではうまくいくのですが、 テーブルAとBではレコード数が違う、また並んでいる順番もバラバラという条件では教えていただいたものではやはりうまくいかなくて。 説明が不十分で申し訳ありませんでした。 このような条件下でもできるものなのでしょうか? 何度もすいません。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.5

>建物名と住所の両方を結合したクエリを作るだけではうまくいかないのです。 うまくいかないってどううまくいかないのですか 非常に基本的なクエリですうまくいかないわけがありません

chitoseo
質問者

補足

CHRONOS_Oさん 返信が遅くなりまして申し訳ありません。 どのようにうまくいかないかといいますと、 例えば、下記のようにテーブルA,Bから作成したクエリがあって、 (a~i)はレコードだとします。 フィールド名  建物A 住所A 建物B 住所B            a     b      a      b            c     d   c e            f     g      h    i ここで抽出したいのは(f,g)(h,i)といった建物、住所とも違うものなのですが、建物Aの抽出条件に<>建物Bとしたとすると、 (a.b)(c.e) (a.b)(h.i) . . といったようになってしまいます。 リレーションや抽出条件で解決するものでしょうか? 解決策を教えていただけたら幸いです。 よろしくお願い致します。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

No1,No3です。ふと思ったのですが テーブルAとテーブルBを見ながら新しいデータを作成するのが目的ならば エクセルで、データを一枚シートに合わせて 並び替えやオードフィルタで重複を無視するなどの方法で絞り込んで 不必要なデータの削除や入れ替えを手作業で行ったほうが作業ははやいかもしれません。

chitoseo
質問者

補足

hallo-2007さん 返信が遅くなり申し訳ありません。 >テーブルAからクエリ作成 式で建物A&住所Aの列追加 テーブルBからも同様に列の追加 新しくクエリAとエリBでクエリを作成する方法ダメですか。 ご指摘の通りやってみたのですが。。。 このときリレーションや抽出条件はどのようにすればいいのでしょうか? 何度も申し訳ありません。 また、私もエクセルでやったほうが早いと思ったのですが、 どうしてもアクセスで作成しなければならない状況にありまして。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

No2さんがいわれる方法ですが。 テーブルAからクエリ作成 式で建物A&住所Aの列追加 テーブルBからも同様に列の追加 新しくクエリAとエリBでクエリを作成する方法ダメですか。 多分 クエリAにのみある建物A&住所A  と クエリBにのみある建物B&住所B  になると思いますが。 同様ですが、テーブルAとテーブルBを加えたテーブルCを作って クエリでテーブルCにB、Aを追加すればひとつにならかも?

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>この2つが完全に一致しているもの以外を抽出したいと思ってます。 これが最終目的なら 建物名と住所の両方を結合したクエリを作るだけです その他の作りたいといっているクエリも非常に基本的なものです >仕事でAccess2000を使ってデータベースを作らなければならなくなりました。 こういうことであるのなら本を買ってきちんと勉強しましょう こういうところで質問するのは断片的なやり取りしか出来ません 本で系統だった知識を得てそれを補完するというよな利用の仕方をしてください

chitoseo
質問者

補足

CHRONOS_0さん ご指摘ありがとうございました。 ただやはり建物名と住所の両方を結合したクエリを作るだけではうまくいかないのです。 申し訳ありませんが、上記以外の回答があれば是非教えてください。 よろしくお願い致します。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

目的は何でしょうか? やり方としては AテーブルにあってBテーブルにない一覧表(不一致)  と分けたほうがわかりやすいです。 クエリで フィールド 建物名A   住所A  建物名B  住所B で、テーブルのリレーションはどうなっていますか?建物Aと建物Bを 結んで、リレーションの線を右クリックして、プロパティで 1,2,3あるので変えてみて表示を確認してください。 多分、最終的にはひとつのテーブルを作成したいとおもいますが、 上記のクエリで修正しながら、片方に追加したいデータだけが表示されるようにします。 データの整理が終了したら、クエリの種類を追加クエリにして実行すれば片方に追加されます。

chitoseo
質問者

補足

hallo-2007さん さっそくの回答ありがとうございます! 補足させていただきますと、テーブルのリレーションはなにも結んでいませんでした。 ご指摘の通り、建物Aと建物Bを結んで、1,2,3を試してみたのですがやはりうまくいきませんでした。 さきにかいた ・AとBで建物名は同じだが住所が違うもの ・AとBで住所は同じだが建物名が違うもの この2つは解決したのですが、 ・どちらか一方にしかない建物名と住所 これがどうしてもうまく表示できません。 もう少しご教授していただけたらありがたいです。 無知なものですいません。 よろしくお願い致します。

関連するQ&A

  • 【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初心者で、クエリウィザードを使用した重複データ抽出、不一致データ抽出、 およびクエリデザインを使用した重複データ抽出が何とかできる程度です。 初心者でも分かるようにご回答いただければ大変助かります。 よろしくお願いいたします。

  • Access]2つのテーブルを比較してフィールドの一部が一致したデータを抽出

    2つの名簿テーブルを比較してどちらのテーブルにも含まれている個人を抽出したいと考えております。 テーブル名とフィールドは以下のとおりです。 ==================== テーブル名「名簿A」 氏名 電話番号 住所 メールアドレス ==================== テーブル名「名簿B」 姓 名 電話番号 住所 メールアドレス ==================== たとえば、この2つの名簿をメールアドレスで一致したものを抽出する場合は選択クエリのデザインビューで「名簿A」のフィールドを読み込ませ、 メールアドレスフィールドの抽出条件として Like [名簿B].[メールアドレス] を入れれば抽出ができたのですが、メールアドレスは、名簿ごとに記入されていたりしなかったりするので、名前での一致を行いたいと思っています。 ここで問題なのが、名簿Aは「氏名」で入力されているのに対し、名簿Bでは「姓」と「名」が別フィールドになっております。 そこで自分なりにやってみたのが、選択クエリのデザインビューで「氏名」のフィールドの抽出条件として Like (*[名簿B].[姓]*) を設定するものでした。 これがうまくいけば最終的には Like (*[名簿B].[姓]*) And Like (*[名簿B].[名]*) という風にして、名簿Aの「氏名」フィールドに名簿Bの「姓」も「名」も入っているものを抽出できるかな?と考えたのですが、上記のように入力すると、自動的に Like ("*[名簿B].[姓]*") となってしまい、何も抽出されなくなってしまいました。 このような方法では希望する抽出は行えないのでしょうか? お分かりのかた、よろしくお願いいたします。

  • ACCESSのクエリ:抽出条件で型が一致しません

    ACCESSでクエリを作ったのですが 実行すると、 「抽出条件で型が一致しません」のエラーが出ます 問題となっているヶ所は テーブルのフィールド定義がバイナリーになっています そして、クエリで   フィールド   テーブル   並べ替え   表示   抽出条件   または となっていますが、 この抽出条件に、1、を入れました テキスト型なら、"1" 数値系型なら、1、でいいのか、と思ったのですが バイナリ型は別の表現があるのでしょうか よろしくお願いします

  • 【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです

    【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです。 Access2003を使っています。 困っている状況は以下のようなもです。 ■テーブル1  ・フィールド1 ■クエリ1  ・フィールドA:フィールド1  ・フィールドB:[フィールドA]   【抽出条件】>=10 このような条件で、クエリを実行すると、 「パラメータの入力 フィールドA」というダイアログが立ち上がってしまいます。 上記載のクエリ1でフィールドAの[]は自然についてしまうのではずせません。 今はもう一つクエリを作る事でこの状況はなんとかしましたが、フィールドに別名をつける毎にクエリを作るとクエリの数が多くなってしまうので困っています。 クエリでフィールドに別名をつけた場合は、そのクエリ上でその別名を使って抽出をかけることはできないのでしょうか? よろしくお願いします。

  • accessの不一致抽出

    accessで2つのテーブルで一致しないものを抽出しようとしてますが、抽出された数が合いません。 テーブルは下記のように2つあります テーブルA AAA ABA CCC DDC DDC テーブルB AAA ABB CCC DDC DDD これで AとBのテーブルをつなぎAのみに存在するものを抽出するのに Aを元テーブルで対象テーブルをBにして、 BのほうにIs Nullを入力して、不一致分だけ抽出して新しいテーブルを作成してます。 同じようにその逆で、Bにのみ存在しているものを抽出してテーブルを作成しました。 最後に、同じようにAとBをリレーで繋ぎ、リレーのプロパティの「1」で、AとBで一致するものだけを抽出してテーブルを作成しました。 Aのみに存在(テーブルA') Bのみに存在(テーブルB') 両方に存在 (テーブルC) そこでテーブルC-テーブルA’の数と、テーブルC-テーブルB'の数を比較して、同じになると思ったんですが、数が異なってしまいました。 おそらく値の「DDC」の所の抽出が問題だと思い、 プロパティで「固有の値」を「はい」にしてみましたが変わりませんでした。 不一致で抜き出したいのは、「DDC」が、テーブルAには2つ、 テーブルBには1つ値があるので、テーブルB’に1つだけ不一致を抽出できればベストなんですが。 access初心者な為、根本的にやり方や考え方が間違っているかもしてませんし、状況説明も下手ですみません。 どなたかご教授いただければと思っております。

  • 不一致クエリでnullまで抽出されてしまいます

    質問です。 現在、accessにて不一致クエリを使用し、テーブルAをチェックし、 マスタテーブルに無い情報が書かれてしまっているフィールドがある場合 抽出して確認をする、というクエリを作りたいと考えています。 不一致クエリにて自動で入る「is null」を使用すると マスタテーブルに無い事が書いてあるレコードは抽出するのですが (逆になぜis nullで相違するレコードが抽出されるのか理解に苦しんでもいるのですが) is nullですので、nullのレコードも抽出されてしまいます。 抽出条件として、マスタテーブルと相違するもの&nullは抽出しない、としたいのですがお知恵を拝借出来ませんでしょうか。 よろしくお願いいたします。

  • 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を使用します。

  • ACCESS抽出条件でデータ型が一致しません

    ACCESSのクエリで抽出条件に"20140106"と入力しますと下記のエラーメッセージが出てきます。 教えて頂けないでしょうか? 抽出条件でデータ型が一致しません。(Error 3464) Find 系メソッドの抽出条件式で、比較する値のデータ型がフィールドのデータ型と一致していません。

  • Accessの不一致クエリについて

    Accessの初心者です。二つのテーブルの異なるフィールどを比較する方法について、教えてください。 例えば、"6523610"という数字が両方のテーブルにあるかどうか調べたいとします。 テーブルA 523(フィールド名:契約コード)+610(ID) テーブルB 6523(フィールド名:取引コード)+61(フィールド名:地域コード) と、それぞれ構成が違います。頭につく"6"と最後の"0"は共通の数字です。クエリで新たなフィールドを作って、"6523610"にするまではわかるのですが、どのフィールドを関連づけていいかわかりません。このような場合は、不一致クエリではできないのでしょうか? 仕事で、明日中にデータを調べなければいけないので困っています。 よろしくお願いします。

  • アクセスでクエリーによる抽出方法

    アクセスでクエリーによる抽出方法を教えてください。 例えばテーブルに    フィールド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  というような検索結果をだしたいのです。 アクセス初心者です。お願いします。

専門家に質問してみよう