在两个条件上使用Left Join缺少Access-SQL查询的值

时间:2012-11-19 16:54:49

标签: sql join criteria

我遇到了一个查询问题,并且对于正在发生的事情已经用完了。我有一张桌子T1:

StoreID Product ProductShipped
KH00137 Super   18
KH00137 Regular 12

另一个表T2,它只共享一些StoreID:

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);

但由于某种原因,它没有显示T2 StoreID字段之一,即使它似乎已成功加入另一个:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

没有理由认为它已成功加入。输出数据第一行中的三个非NULL字段中的每一个都来自table1。

这向我表明实际上根本没有加入。

  • 测试您的数据是否有空格和大写/小写不匹配。


使用LENGTH()类型的函数可能会显示一个字符串实际上与另一个字符串不同。 (一个Super可能是5个字符长,另一个表中的Super最后可能有一个空格,长度为6个字符。或者可能是StoreID中类似的东西?)

此外,这是支持 加入文字字段的一个原因。通过将foriegn密钥ID保持为数字(例如整数),您几乎不会经常遇到此问题,即使您这样做也很容易调试和纠正。

祝你好运。