2012-11-19 31 views
2

我遇到查询问题,并且发生了什么问题。我有一个表T1:在两个条件下使用左连接访问SQL查询时缺失值

StoreID Product ProductShipped 
KH00137 Super 18 
KH00137 Regular 12 

而另一个表T2,这股只有少数StoreIDs的:

StoreID Product Other data… 
KH00137 Super … 
KH00137 Regular … 

我试图离开加入到两个STOREID和产品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 

任何想法?

回答

2

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

这表明实际上根本没有连接。

  • 测试您的数据以查找空格和大写/小写错误匹配。


使用LENGTH()类型的功能可以显示一个字符串实际上是不一样的另一个。 (一Super可能是5个字符长,在其他表中的Super可能会在后面加上一个空格和为6个字符,或者可能在STOREID类似的东西?)

此外,这是一个原因,支持不是加入文本字段。通过将密钥ID保留为数字(例如整数),您几乎不会遇到这个问题,甚至在执行时也很容易进行调试和纠正。

祝你好运。

+0

在'doh'时刻,产品类型(我为上述帖子更改)在某些地方使用英国拼写,在其他地方使用美国拼写。所以我纠正了它,现在它完美地结合在一起。将加入关于加入文本字段的观点。 :) – Wilskt