• ベストアンサー

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

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

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

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

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

Tach
質問者

お礼

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

その他の回答 (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を使わずとも不一致クエリーウィザードを使えば簡単に出来ます。

noname#1802
noname#1802
回答No.3

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

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

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句を使うなどしてください。

Tach
質問者

補足

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

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

このままの状態だとちょっと難しいのでたとえばテーブルを 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の使用)はデータ件数が多くなるほど処理の時間がかかるようになります。

Tach
質問者

補足

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

関連するQ&A