-PR-
解決
済み

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

  • すぐに回答を!
  • 質問No.34026
  • 閲覧数1276
  • ありがとう数4
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 43% (13/30)

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

例えば テーブル Aには
ID   価格    商品
  1  200    りんご
  2  150    みかん
  3  180    りんご
  4  230    いちご

テーブル Bには
  1  150    みかん
  2  180    りんご

とあった場合 A-B のクエリーを実行して
  1  200    りんご
  2  230    いちご

という結果を得たいのですが、どのようにすれば出来るのでしょうか
よろしくお願いします。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル8

ベストアンサー率 51% (14/27)

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

お礼率 43% (13/30)

たいへん参考になりました
ありがとうございました
今後ももよろしくお願いいたします。
投稿日時 - 2001-02-06 18:12:03
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル8

ベストアンサー率 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 という風にします ...続きを読む
このままの状態だとちょっと難しいのでたとえばテーブルを

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

お礼率 43% (13/30)

早速の回答ありがとうございます。

また、商品コードをつけたらいいという事ですが残念ながら初期のデータが膨大にあり後からつけるのが困難です。

さて、初歩的な質問で恐縮なのですが
SELECT...以下の文についてですが何処に書けば良いのでしょうか

また SELECT や FROM 等の構文については何を参照したら良いでしょか

全くのど素人が勉強するのに最適な参考書がございましたらご紹介ください。
投稿日時 - 2001-01-30 15:57:10


  • 回答No.2
レベル11

ベストアンサー率 49% (139/279)

1.まず、UNIONクエリーでデータを統合します。 -1でかけているところがミソです。 VIEWを作ると使いやすいかもしれません。 このVIEWを統合テーブルという名前とします。 SELECT 価格 AS 価格,商品 AS 商品 FROM テーブルA UNION ALL SELECT 価格*-1 AS 価格,商品 AS 商品 FROM テーブルB 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

お礼率 43% (13/30)

早速の回答ありがとうございます。

さて、初歩的な質問で恐縮なのですが
SELECT...以下の文についてですが何処に書けば良いのでしょうか

また SELECT や FROM 等の構文については何を参照したら良いでしょか

全くのど素人が勉強するのに最適な参考書がございましたらご紹介ください。
投稿日時 - 2001-01-30 15:48:56
  • 回答No.3

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

でいいのでは??
「価格」を「商品」としても問題ないかと・・・・
  • 回答No.5
レベル9

ベストアンサー率 35% (28/79)

SELECT テーブルA.ID, テーブルA.価格, テーブルA.商品 FROM テーブルA LEFT JOIN テーブルB ON (テーブルA.商品=テーブルB.商品) AND (テーブルA.価格=テーブルB.価格) WHERE (テーブルB.ID) Is Null; とすればよいと思います。 また、SQLを使わずとも不一致クエリーウィザードを使えば簡単に出来ます。
SELECT テーブルA.ID, テーブルA.価格, テーブルA.商品
FROM テーブルA
LEFT JOIN テーブルB
ON (テーブルA.商品=テーブルB.商品) AND (テーブルA.価格=テーブルB.価格)
WHERE (テーブルB.ID) Is Null;
とすればよいと思います。
また、SQLを使わずとも不一致クエリーウィザードを使えば簡単に出来ます。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ