Analytics

2010年9月4日 星期六

[MS Access]如何 JOIN 2個以上的資料表(How to JOIN 2 or more table)


問題

如何 JOIN 2個以上的資料表



解決方法

以MS SQL來說,一般要JOIN 2個以上的Table不用特別指名使用INNER JOIN 或是LEFT JOIN等...
但在MS ACCESS裡就不同了!
因為如果只用JOIN 的話,會發現錯誤,無法取得資料,但若改成INNER JOIN 則可順利執行

而如果要JOIN 2 個TABLE以上的話,就要多加()
例:
SELECT 
a.OrderID AS 進貨單尾碼
,c.VenderA AS 廠商代碼
,c.Name AS 廠商名稱
,a.ProductID AS 貨品品代碼
,b.ProductName AS 貨品名稱
,a.Quantity AS 進貨數量
,a.Price AS 進貨價格
,a.TotalPrice AS 應付金額
,a.Tax AS 稅率
,a.LastPrice AS 含稅總額
,IIf(a.Mark='N','','已作廢') AS 作廢
,a.CreateDate AS 建立日期
,a.CreateID AS 建立人員
,a.UpdateDate AS 更新日期
,a.UpdateID AS 更新人員
,a.ConfirmDate AS 確認日期
,a.ConfirmID AS 確認者 
FROM 
OrderHistory a 
INNER JOIN [SysVender]  c ON c.VenderA=a.VenderA 
INNER JOIN [SysProduct] b ON a.ProductID=b.ProductID  

如果在MS SQL裡執行的話就順利,但在ACCESS裡會出現[a.ProductID=b.ProductI錯誤]
而解決的方式就是在前方的JOIN 時加入()

如下:
SELECT 
a.OrderID AS 進貨單尾碼
,c.VenderA AS 廠商代碼
,c.Name AS 廠商名稱
,a.ProductID AS 貨品品代碼
,b.ProductName AS 貨品名稱
,a.Quantity AS 進貨數量
,a.Price AS 進貨價格
,a.TotalPrice AS 應付金額
,a.Tax AS 稅率
,a.LastPrice AS 含稅總額
,IIf(a.Mark='N','','已作廢') AS 作廢
,a.CreateDate AS 建立日期
,a.CreateID AS 建立人員
,a.UpdateDate AS 更新日期
,a.UpdateID AS 更新人員
,a.ConfirmDate AS 確認日期
,a.ConfirmID AS 確認者 
FROM (
OrderHistory a 
INNER JOIN [SysVender]  c ON c.VenderA=a.VenderA )
INNER JOIN [SysProduct] b ON a.ProductID=b.ProductID  

如此一來就可以順利執行了!!

沒有留言:

熱門文章