2010-08-18 59 views
0

我試圖做一個報表,它會顯示客戶購買的產品。 我有Products,TransDetails,TransHeaders,Customers表和我必須選擇所有產品,我必須顯示每個客戶的每個產品的銷售量。 如果客戶還沒有購買任何特定產品,它應該仍然可以在0銷售的報告中看到。用戶應該能夠爲特定客戶或一組客戶運行此報告。 我現在面臨的問題是,如果我在我的sql查詢中包含客戶表,那麼它只顯示客戶購買的產品,而不顯示客戶沒有購買的產品。水晶報表SQL Server多表和外部聯接

SELECT Products.SalesCategory, Products.ProductCode, Products.ProductTitle, Customers.CustomerCode, Transdetails.quantity 
    From Products left outer join Transdetails on Products.ProductID= Transdetails.ProductID 
      Left Outer Join Customers on Customers.CustomerId= Transdetails.CustomerID 
    Where SalesCategory like 'XYZ' and Products.Status like 'A' 
    and customers.customercode like 'BEST' 
    order by SalesCategory, ProductCode, ProductTitle 

回答

0

這似乎是因爲你的Where條款包括對customers.customercode like 'BEST'選擇 - 這實質上是將外連接到客戶到內部連接。

要與任何銷售,給客戶提供customercode選擇所有產品,如「XYZ」和狀態就像「A」 SalesCategory,在一起像「最佳」,請嘗試以下操作:通過消除產品之間的鏈接

SELECT Products.SalesCategory, Products.ProductCode, Products.ProductTitle, Transcust.CustomerCode, Transcust.quantity 
From Products left outer join 
     (SELECT Customers.CustomerCode, Transdetails.ProductID, Transdetails.quantity 
     FROM Transdetails 
     Join Customers on Customers.CustomerId= Transdetails.CustomerID 
     WHERE customers.customercode like 'BEST') Transcust 
     on Products.ProductID= Transcust.ProductID 
Where SalesCategory like 'XYZ' and Products.Status like 'A' 
order by SalesCategory, ProductCode, ProductTitle 
+0

@shahsali:類似的方法應該可以用於大量的表格 - 爲什麼不編輯你的問題以包括完整的查詢,最好包括參數?另外,你可以包括你正在使用的Crystal版本嗎? – 2010-08-25 08:33:14

+0

感謝馬克我已經找到解決方案,通過刪除產品和交易表之間的鏈接。雖然報告比正常時間更長.. 感謝您的幫助。 – user423487 2010-09-01 06:20:47

0

和交易細節表我已經解決了這個問題,所以我選擇了所有產品並選擇了所有客戶的交易。