2012-11-19 32 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