こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESS2007で、重複チェックSQL文改編

ACCESS2007で、重複チェックのSQL文の改編方法について教えてください。

●フィールド内容=|会社名|郵便番号|住所|電話番号|業種|

テーブル1とテーブル2を比較して、この内、|電話番号|が

(1)両テーブルに存在する=

SELECT テーブル1.*
FROM テーブル1 INNER JOIN テーブル2 ON テーブル1.電話番号=テーブル2.電話番号;

(2)テーブル1のみに存在する=

SELECT テーブル1.*
FROM テーブル1 LEFT JOIN テーブル2 ON テーブル1.電話番号=テーブル2.電話番号
WHERE (((テーブル2.電話番号) Is Null));


(3)テーブル2のみに存在する=

SELECT テーブル2.*
FROM テーブル1 RIGHT JOIN テーブル2 ON テーブル1.電話番号=テーブル2.電話番号
WHERE (((テーブル1.電話番号) Is Null));


場合のSQL文が上記なのですが、この条件を

|会社名|と|電話番号|の両方が一致する時(1a)(2a)(3a)

|会社名|と|電話番号|のどちらか一つが一致する時(1b)(2b)(3b)

にソース改変するにはどうしたら良いでしょうか?(AND、ORを使うのだと思いますが、具体的配置位置が分かりません。。)




PS1:この程度の事ならSQL文を書かずとも、ウィザードで処理できるのでしょうか?
PS2:テーブル名が、[テーブル]とカッコ有る無し両パターン見ますが、どちらが正解なのでしょうか?
PS3:SQL文内は、ワード間は、半角スペースに統一されているんでしょうか?それともスペース無しでもエラーは出ないんでしょうか?

投稿日時 - 2012-12-26 16:27:54

QNo.7862515

すぐに回答ほしいです

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

いま、手元でACCESSが動作しないので未テストですが
(1)はそれほど難しいものではないと思います。
テーブル名をそのまま書くと長くなるで別名使ってます。

(1a)

SELECT t1.*
FROM テーブル1 t1 INNER JOIN テーブル2 t2
ON t1.会社名 = t2.会社名 and t1.電話番号 = t2.電話番号;

(1b)
SELECT t1.*
FROM テーブル1 t1, テーブル2 t2
where t1.会社名 = t2.会社名 or t1.電話番号 = t2.電話番号;

(2b)・(3b)は会社名と電話番号の条件が難しいかも。
2項目を連結して評価するのかなぁ。where条件の各項目をNZで囲むほうが良いかも。

(2a)
SELECT t1.*
FROM テーブル1 t1, テーブル2 t2
where (t1.会社名 & "|" & t1.電話番号) <>(t2.会社名 & "|" & t2.電話番号)
;

SELECT t1.*
FROM テーブル1 t1, テーブル2 t2
where t1.会社名= t2.会社名 and t1.電話番号 <> t2.電話番号
;

SELECT t1.*
FROM テーブル1 t1, テーブル2 t2
where t1.会社名<> t2.会社名 and t1.電話番号 = t2.電話番号
;

投稿日時 - 2013-01-21 22:13:12

お礼

お礼つけ忘れておりましたが、ご回答役に立ちました。
ありがとうございました。

投稿日時 - 2014-02-23 20:55:31

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問