プロが教える店舗&オフィスのセキュリティ対策術

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文内は、ワード間は、半角スペースに統一されているんでしょうか?それともスペース無しでもエラーは出ないんでしょうか?

A 回答 (1件)

いま、手元で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.電話番号
;
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/02/23 20:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!