• ベストアンサー
  • すぐに回答を!

アクセスの2つのテーブルから重複しないものを抜き出す方法について

アクセスの2つのテーブルから重複しないものを抜き出す方法について 例えば テーブル Aには ID   価格    商品   1  200    りんご   2  150    みかん   3  180    りんご   4  230    いちご テーブル Bには   1  150    みかん   2  180    りんご とあった場合 A-B のクエリーを実行して   1  200    りんご   2  230    いちご という結果を得たいのですが、どのようにすれば出来るのでしょうか よろしくお願いします。

共感・応援の気持ちを伝えよう!

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.4
  • ykymtkt
  • ベストアンサー率51% (14/27)

"SELECT~FROM"は クエリを新規に作成してクエリのデザイン画面の上部のテーブル等が表示される部分で右クリックしSQLビューに切り替えて表示される画面に入力します。 Selectの後は参照したいフィールド名、 Fromの後はテーブル名です。 Whereの後ろはデータを参照する条件を記述します。 SQLやAccessVBAを勉強されるときに参考に出来る書籍は山のようにありますので、書店で実際に見られて分かりやすいものを購入されるのがよいと思います。InterNetでもSQLを解説したページが沢山ありますので"SQL"や"ACCESS"等で検索されたらいかがでしょうか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

たいへん参考になりました ありがとうございました 今後ももよろしくお願いいたします。

その他の回答 (4)

  • 回答No.5

SELECT テーブルA.ID, テーブルA.価格, テーブルA.商品 FROM テーブルA LEFT JOIN テーブルB ON (テーブルA.商品=テーブルB.商品) AND (テーブルA.価格=テーブルB.価格) WHERE (テーブルB.ID) Is Null; とすればよいと思います。 また、SQLを使わずとも不一致クエリーウィザードを使えば簡単に出来ます。

共感・感謝の気持ちを伝えよう!

  • 回答No.3
noname#1802
noname#1802

select A.* from A where A.価格 not in ( select B.価格 from B ) ; でいいのでは?? 「価格」を「商品」としても問題ないかと・・・・

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • arata
  • ベストアンサー率49% (139/279)

1.まず、UNIONクエリーでデータを統合します。 -1でかけているところがミソです。 VIEWを作ると使いやすいかもしれません。 このVIEWを統合テーブルという名前とします。 SELECT 価格 AS 価格,商品 AS 商品 FROM テーブルA UNION ALL SELECT 価格*-1 AS 価格,商品 AS 商品 FROM テーブルB 2.上記の統合テーブルから集計値を計算します。 SELECT SUM(価格),商品 FROM 統合テーブル GROUP BY 商品 これで、OKだと思います。オラクルだとFROMにSELECT文がかけるので、1回でとれると思います。 なお、価格が0のものも出てしまいますが、これを除きたい場合は、HAVING句を使うなどしてください。

共感・感謝の気持ちを伝えよう!

質問者からの補足

早速の回答ありがとうございます。 さて、初歩的な質問で恐縮なのですが SELECT...以下の文についてですが何処に書けば良いのでしょうか また SELECT や FROM 等の構文については何を参照したら良いでしょか 全くのど素人が勉強するのに最適な参考書がございましたらご紹介ください。

  • 回答No.1
  • ykymtkt
  • ベストアンサー率51% (14/27)

このままの状態だとちょっと難しいのでたとえばテーブルを Aは ID  価格    商品  商品コード  1  200   りんご 101  2  150   みかん 102  3  180   りんご 103  4  230   いちご 104 Bは ID  価格    商品  商品コード  1  150   みかん 102  2  180   りんご 103 という風にします。 すると SELECT テーブルA.商品コード FROM テーブルA,テーブルB WHERE テーブルA.商品コード = テーブルB.商品コード これで重複している商品コードが取得できますのでこれをサブクエリにして SELECT * FROM テーブルA WHERE 商品コード NOT IN (    SELECT テーブルA.商品コード    FROM テーブルA,テーブルB    WHERE テーブルA.商品コード = テーブルB.商品コード) UNION SELECT * FROM テーブルB WHERE 商品コード NOT IN (    SELECT テーブルA.商品コード    FROM テーブルA,テーブルB    WHERE テーブルA.商品コード = テーブルB.商品コード) これで重複しないものが取得できます。 ちなみにご質問の例ですと重複しないものがテーブルAだけのようですので、それでよろしければ"UNION"句以降は要りません。 ただしこの方法(Not Inの使用)はデータ件数が多くなるほど処理の時間がかかるようになります。

共感・感謝の気持ちを伝えよう!

質問者からの補足

早速の回答ありがとうございます。 また、商品コードをつけたらいいという事ですが残念ながら初期のデータが膨大にあり後からつけるのが困難です。 さて、初歩的な質問で恐縮なのですが SELECT...以下の文についてですが何処に書けば良いのでしょうか また SELECT や FROM 等の構文については何を参照したら良いでしょか 全くのど素人が勉強するのに最適な参考書がございましたらご紹介ください。

関連するQ&A

  • 一つのテーブルの複数のフィールドから抜き出す方法について

    一つのテーブルの複数のフィールドから抜き出す方法について 例えば下記のようなテーブルがあったとします。       1     2     3     4 A商店  りんご   みかん   バナナ B商店  みかん   イチゴ   くり    パイナップル C商店  イチゴ   パイナップル バナナ D商店  イチゴ   バナナ   りんご のようなテーブルがありフィールド1~4いずれかにみかんを含むクエリーを作成し次のような結果をACCESSで作成したいのですが、簡単な方法はあるのでしょうか?       1     2     3     4 A商店  りんご   みかん   バナナ B商店  みかん   イチゴ   くり    パイナップル よろしくお願いいたします。 尚、使用しているデータベースはACCESS2000です。

  • Accessで重複データを結合するには?

    こんにちわ、みなさん。 Access超初心者です。よろしくお願いします。 Accessのテーブルで下記のようなデータがあるとします。  店名  | 商品 |  A店  |リンゴ |  A店  |トマト |  A店  |ナシ  |  B店  |リンゴ |  B店  |みかん | これを下記のように店名ごとに商品名を結合したいのです。 (レポートではなく、テーブルにしたいです)  店名  | 商品        |  A店  |リンゴ;トマト;ナシ |  B店  |リンゴ;みかん    |   重複クエリーを使えばと思ったのですが、 思ったとおりにはなりませんでした。。 どうぞ、よろしくお願い致します。m(__)m ---------------------------------------- OSは、Windows 98 アプリケーションは、Access 2000 です ----------------------------------------

  • access テーブル結合の逆?

    Access2003 お世話になります。SQLで以下のようなデータを取得する場合、上手い方法はあるのでしょうか。なんだかとても簡単な事のような気がするのですが…… テーブルA: ---品名--- りんご みかん もも いちご テーブルB: ---品名--- りんご もも このテーブルBに入力されているレコードをテーブルAから"除外"して、結果として「みかん」と「いちご」だけが欲しいのです。 テーブルBのレコードが少なければ、直接 品名<>"りんご" とか書いてもいいのかもしれませんが、結合のようなSQLで一発でできてしまったりしないでしょうか。 access上で可能なスマートな方法があれば教えていただきたいです。 よろしくお願いいたします。

  • ACCESS2000を使って複数のテーブルを照合する方法について

    ACCESS2000を使用して下記のような3つのテーブルがあったとします。 1.メインテーブル   商品名   コード 1 りんご   012 2 りんご   022 3 バナナ   200 4 バナナ   201 5 イチゴ   100 2.A商店テーブル   商品名   コード 1 りんご   012 2 バナナ   200 3 バナナ   201 3.B商店テーブル 1 りんご   022 2 バナナ   201 テーブル1~3を照合して作製したいクエリ   商品名   コード  A  B 1 りんご   012  ○  × 2 りんご   022  ×  ○ 3 バナナ   200  ○  × 4 バナナ   201  ○  ○ 5 イチゴ   100  ×  × のように複数のテーブルを参照し、テーブル1のフィールドにある内容と同一のものがどのテーブルに存在するまたは、存在しないをがわかるような一覧リストを作成したいのですが、具体的にはどのようにしたら良いのでしょうか。 よろしくおねがいいたします。

  • accessで2つのテーブルから参照する方法

    access2007を使っています。 例えば、 テーブルA ID   品名   価格 A1   鉛筆    100円 テーブルB ID   品名   価格 B1  消しゴム  50円 というレコードが2つあった場合 テーブルAとテーブルBのどちらからも参照して ID  品名   価格 A1  鉛筆   100円 B1  消しゴム  50円 というふうにクエリにデータを反映させるのにはどうすれば良いのでしょうか?  

  • ACCESSのデータ抽出について

    項目が同じ(1)テーブルと(2)テーブルと(3)の産地データをリレーションシップでつなぎデータ■クエリ_結果2のように抽出したいのですが■クエリ_結果2のちょうに重複するデータしか抽出できません。 どうしたら結果1のように全ての商品を抽出できるでしょうか? アクセス初心者です。よろしいくお願いします (1)テーブル【中央11月データ】 バナナ 50 りんご 10 ミカン 100 (2)テーブル【関西11月データ】 バナナ 30 梨 60 (3)産地データ バナナ フィリピン りんご 青森 みかん 愛媛 梨 千葉 ■クエリ_結果1 バナナ フィリピン 80 りんご 青森 10 みかん 愛媛 100 梨 千葉 60 ■クエリ_結果2 バナナ フィリピン 80

  • ACCESS2000の重複クエリ

    よろしく、お願いします。 ACCESS2000+Win2000で使用しています。 ACCESS2000の”テーブルA”の”フィールドa”の”重複クエリ甲”の結果としてX、Y、Zというデータが出たとします。 そのうち、XのみにテーブルAの”フィールドb(Yes/No型)”にフラグを立てたいのですが、良い方法はありませんか? 私は重複クエリ甲に、更新クエリで更新する事は出来ませんよね? 甲と同じく”重複クエリ乙”を作って、乙は”集計”で先頭のみを出して、甲と乙の”不一致クエリ”で差分を出してみたりもしたのですが、更新クエリを使えない為に、フラグを立てられません。 何か良い方法を教えてください。 お願い致します。

  • ACCESSでの重複箇所

    accessで以下の様なデータがあります 受注番号|商品名|個数|単価|送料|手数料| 1111 |みかん|3 |200 |500 |0 | 2222 |りんご|2 |250 |500 |250 | 2222 |いちご|4 |200 |500 |250 | 2222 |メロン|1 |1000|500 |250 | 3333 |ぶどう|2 |800 |500 |0 | 4444 |いちご|2 |200 |500 |250 | 4444 |メロン|1 |1000|500 |250 | 2222や4444の様に受注番号が同じ場合 2222 |りんご|2 |250 |500 |250 | 2222 |いちご|4 |200 |0 |0 | 2222 |メロン|1 |1000|0 |0 | 4444 |いちご|2 |200 |500 |250 | 4444 |メロン|1 |1000|0 |0 | と、先頭にだけ送料・手数料を残して残りを【0】もしくは 削除する方法はありますか? 手作業では件数が多い為、クエリなど使って自動的に する方法があれば教えてください。 どうぞよろしくお願い致します。

  • ACCESSのクエリ機能で重複したデータを除く方法

    accessの初心者です。 どなたかお詳しい方是非よろしくお願い致します。 accessのクエリ機能をつかい、レコードを結合したいのですが、重複したレコードを省く方法を教えてください m(_ _)m 例えば、下記のようなAとBというテーブルがあり、Aには商品番号と商品名、Bには商品番号と倉庫名が入っているとします。 テーブルA(※商品番号の重複なし) 商品番号 商品名 001    商品A 002    商品B 003    商品C テーブルB(※商品番号の重複あり) 商品番号 倉庫名 001    倉庫A 001    倉庫B 001    倉庫C 002    倉庫B 002    倉庫C 003    倉庫A 003    倉庫B 商品番号でクエリをかけて、テーブルAのレコード数と同じレコードの商品番号、商品名、倉庫名と表示させたいのです。 (倉庫名はテーブルBのレコードの中のいずれかだけでOKです。) 例えば、下記のようなクエリ結果を表示させたいです。 商品番号 商品名 倉庫名 001   商品A  倉庫A 002   商品B  倉庫B 003   商品C  倉庫A 説明がうまくできず申し訳ありませんが、どなたかお詳しい方よろしくお願い致します。

  • ACCESSで条件付き書式の設定方法

    ACCESS初心者です。 エクセルでの条件付き書式ならわかるのですが、 同じようなことがACCESSでもできないかと思い、相談しました。 access (2003) 2007 または 2010で 次のようなデータをフォームで表示する際 データ構造 ID  ロット  商品名  生産者 1   A    みかん    佐藤 2   A    りんご    武藤 3   A    いちご    江藤 4   A    りんご    武藤 5   B    りんご    須藤 6   B    みかん    津藤 7   B    りんご    江藤 (IDは表示しません) このデータで 同じロットに同じ生産者の同じ商品が入らないように チェックをしたいのです。 ですから、このデータでは  ロット「A」生産者「武藤」商品名「りんご」の行 あるいは一項目が 強調表示されるようにしたいのです。 なにか良い方法があればお教え下さい。よろしくお願いします。