2013-01-21 47 views
-1

我在我的SQL數據庫中有兩個相同的表,這些表分別由項目代碼和數量組成。不同的qaunties上的內部連接

我需要看哪個有不同數量的兩個表中的項目和

沒有在其他表中存在的項目

我嘗試使用FULL OUTER JOIN ON ITEMCODE = ITEMCODE及數量<> QTY

它不工作

結果我得到的東西LIK Ë是:

http://www.sendspace.com/file/nmb7yu

+5

**它不工作**是什麼意思?你有錯誤信息嗎?錯誤的結果?還有別的嗎?請發佈幾行樣本數據(涵蓋所有可能的案例)和期望的結果,以便我們確切地知道你在做什麼。 –

+0

@AaronBertrand你可以從我剛剛添加的鏈接下載結果集 –

+0

至少說出爲什麼是負面投票:@ –

回答

1

嘗試是這樣的:

SELECT c.Code , 
     t1.Code , 
     t1.Qty , 
     t2.Code , 
     t2.Qty 
FROM (SELECT Code 
      FROM  dbo.Table1 
      UNION 
      SELECT Code 
      FROM  dbo.Table2 
     ) c 
     LEFT OUTER JOIN dbo.Table1 t1 ON c.Code = t1.Code 
     LEFT OUTER JOIN dbo.Table2 t2 ON c.Code = t2.Code 
WHERE t1.Code IS NULL 
     OR t2.Code IS NULL 
     OR t1.Qty <> t2.Qty 

既然你有一個測試對於WHERE子句中的不等式,您隱式地只包含兩個表中的項目。通過這種方式,您可以將物品放在一張表中,但不包含其他物品,或者在數量上有差異。

+0

救生員謝謝男人:) –

+0

WKordos的答案很可能會更好,只是FYI。由於union和left outer join,我提供的union會導致更多的讀取。 –

+0

好的,謝謝,我也會嘗試一下 –

1
select * 
from table1 a full outer join table2 b 
on a.code = b.code 
where a.qty <> b.qty or a.code is null or b.code is null 

我的幸運的猜測是,你過濾掉行,其中代碼欄爲空