2

クエリに問題があり、何が起こっているのかについてのアイデアが不足しています。テーブルT1があります。

StoreID Product ProductShipped
KH00137 Super   18
KH00137 Regular 12

そして、StoreIDの一部のみを共有する別のテーブルT2:

StoreID Product Other data…
KH00137 Super   …
KH00137 Regular …

次のクエリを使用して、StoreIDとProductの両方でT2への結合を残そうとしています。

SELECT T1.StoreID, T2.StoreID, T1.Product, T1. ProductShipped
FROM T1 LEFT JOIN T2 ON (T1.Product = T2.Product) AND (T1.StoreID = T2.StoreID);

ただし、何らかの理由で、他のフィールドに正常に結合されているように見えても、T2StoreIDフィールドの1つのフィールドが表示されません。

T1.StoreID  T2.StoreID  T1.Product  T1.ProductShipped
KH00137                 Super       18
KH00137     KH00137     Regular     12

何か案は?

4

1 に答える 1

2

正常に参加したと見なす理由はありません。出力データの最初の行にある3つの非NULLフィールドのそれぞれは、table1からのものです。

これは、実際にはまったく参加していないことを示しています。

  • 空白と大文字/小文字の不一致がないかデータをテストします。


関数のタイプを使用LENGTH()すると、一方の文字列が実際にはもう一方の文字列と同じではないことが示される場合があります。 (1つSuperは5文字の長さで、もう1つSuperのテーブルの最後にスペースがあり6文字の長さである可能性があります。または、StoreIDに類似したものがある可能性がありますか?)

また、これがテキストフィールドでの結合をサポートしない理由の1つです。外国のキーIDを数値(整数など)として保持することにより、この問題が発生することはほとんどありません。また、発生した場合でも、デバッグと修正は非常に簡単です。

幸運を。

于 2012-11-19T16:59:24.397 に答える