2011-01-27 44 views
0

私は2つの異なるテーブルで同じフィールドを比較するにはどうすればいいですか?

TABLE1(各テーブルからの結果で)2つのテーブルを比較する(フィールドコードである)と第3のときに名前の一致または同類を作成する必要があります。名姓コード年齢

表2:アドレス街を私は、各フィールドの違い

を見るために結果としてTABLE1とtable2のからコードで新しいテーブルを必要とするコード

はa345694s3

のようなテキストです

ありがとうございます。

+0

'code'の意味とそのテーブルの関係についてもっと説明できますか?なぜあなたは2つの値のセットを比較しようとしていますか?どんな正確さが必要ですか?彼らはどのように「好き」になる必要がありますか?文字列の先頭から、または文字列の一部から一致する必要がありますか?各テーブルのどの2つの行を比較するのかをどのように知っていますか?コード列とは別に、無関係な表であり、完全一致が必要なtable1.code = table2.codeに関連しています。 –

+0

こんにちは!私は間違った書式設定されたxlsから大量のインポートのために、コードがカットされている(一意のコードである)かどうかを調べる必要があります(たとえば、数値フィールドであると考える最初の0を削除します)。だから私は10文字(文字列の任意の部分)に一致する必要があります。表は関連していません。 – stefano

答えて

0
SELECT u.iduser, a.idaccount, u.usercode_user, a.usercode_accounts 
FROM users AS u, accounts AS a 
WHERE (((a.usercode_accounts) Like "*" & [u].[usercode_user] & "*")); 
0

私はよく分からないが、あなたは条件... EXどこで試すことができます:あなたは上記のコードの結果が出た場合 select * from tab1 t1, tab2 t2 where 't1.code'='t2.code'

その後、サブクエリとしてそれを作ります!

0

あなたがtable2の対TABLE1にあるどのコードを参照しようとしている場合は、FULL OUTERが

SELECT t1.code AS T1, t2.code as T2 
FROM table1 t1 
FULL OUTER JOIN table t2 
     ON t1.code = t2.code 

結果、JOINしてみてください:FULL OUTERとして

T1  T2 
==== ==== 
A  NULL --'A' is in table1 but not table2 
NULL B  --'B' is in table2 but not table1 
C  C  --'C' is in both tables 

EDIT

をJOINはMS Accessで使用できません.INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOINを使用して、説明したのと同じことを実現しますhere

+0

Jet/ACEにJOINの形式がないSQLには、OUTERキーワードが必要です。 INNER JOIN、LEFT JOIN、RIGHT JOINがあり、OUTERは実行に影響を与えません。SQLをより冗長にするだけで、クエリを保存するとJet/ACEはOUTERを取り除きます。つまり、SQLでコードを動的に記述しない限り、OUTERキーワードを使用することで互換性の利点はありません。 –

+0

権利はありますが、害はありません、ファウルはありません) – bitxwise

0

あなたのコメントから、ひどくインポートされた一致しない行を探したいと思っています。まず、正しくインポートされたすべての一致する行を見つけて、そのセットに存在しないものを選択するだけです。

SELECT * 
FROM table1 
WHERE code NOT IN (
    -- find all the matching values of code which imported correctly 
    SELECT code 
    FROM table1 
     JOIN table2 ON table1.code = table2.code 
) 

これは、高速クエリではありませんが、それは速度が主な問題ではありませんので、それは最初のインポート後に生産で実行する必要はありません整合性チェックのためであることから。

+0

派生テーブルのLEFT JOINはなぜですか?それはインデックスを確実に使用するのに対し、NOT INはそうではないかもしれません(時にはそうではありませんが、時にはそうではありません - 私の経験では予測できません)。結果セットを編集する必要がない限り、LEFT JOINが優れていない理由はわかりません。 –

+0

@ David-W-Fentonはい、うまくいけば、うまくいけば、必要なロジックを明確に示すことができました。これがまったく役に立ったのかどうかは分かりません。 –

関連する問題