0

私はSQLに非常に慣れていません。

マージする2つのテーブルがあり、次のコードが機能します

SELECT *
FROM confirm
JOIN order ON confirm.email = order.email

しかし、これは私にはうまくいきません

SELECT *
FROM confirm
JOIN order ON confirm.custid = order.custid

ここにあるすべて (email、custid) は VARCHAR(22) です。最初のものでは期待される結果が得られますが、2番目のものでは一致する結果が得られません。email および custid レコードは、レコード間で可変長です。私もトリム()を試しましたが、役に立ちませんでした。ポインタはありますか?

AND custid は次の形式です AB12345 -2 つの文字と数字

4

2 に答える 2

0

ジェレミーがコメントで述べたように、「custid」が正確に一致しない場合、それは参加しません。

例:表1:電子メール:abc@abc.com CustId:AB12345

Eメール:abc2@abc.com CustId:AB12346

表2:電子メール:abc@abc.com CustId:AB12345

Eメール:abc3@abc.com CustId:AB12347

もし、するなら:

SELECT * FROM TableA A
INNER JOIN TableB B on B.CustId = A.CustId

結果は次のようになります。Eメール:abc@abc.comおよびCustId:AB12345

これは、これらの列が互いに一致するためです。abc2とabc3は両方のテーブルで一致しないため、結果には表示されません。

于 2012-05-07T00:34:49.277 に答える
0

最初に両方のテーブルを調べて、一致するcustidが存在するかどうかを確認します。ここで、where条件を適用してフィルターで除外します。たとえば、select * from tblconfirm where custid = "AB1234"、他のテーブルの場合のchckなどです。それなら問題はありません。そうでなければ結果は出ません。

于 2012-05-07T00:35:04.800 に答える