2017-08-23 142 views
0

我們正在創建一個關於計費和庫存維護的WPF應用程序項目。在數據庫中,一個表tbl_puv包含購買詳細信息產品ID,數量和規模ID,收據表tbl_receipt收據被放入所需數量。每次收據後,我應該更新產品剩餘數量的tbl_puvSQL Server:連接三張表

這是我使用的查詢:

SELECT 
    Pending = (([Convertscale](tbl_puv.Quantity, tbl_puvd.ScaleId, p.StandardUnit)) - ([Convertscale](tbl_reciptdetails.Quantity, tbl_reciptdetails.Scale, p.StandardUnit))) 
FROM 
    dbo.tbl_Product p 
INNER JOIN 
    dbo.tbl_puvd ON p.ProductId = dbo.tbl_puv.ProductId 
INNER JOIN 
    dbo.tbl_reciptdetails ON tbl_reciptdetails.ProductId = tbl_puvd.ProductId 
tbl_puv.IsActive = 'True' AND tbl_receiptdetails.IsActive = 'True' AND tbl_puvd.PurchaseId = 10609 

其中Convertscale是標量值函數減法

在上面查詢之前轉換產品標準單元的單元,我的表是:

  • tbl_puv ---購買表
  • tbl_puvd ---購買詳情表
  • tbl_receiptdetails ---收據細節表
  • tbl_product ---產品表

我得到多個結果,請幫我查詢....謝謝

的表的列結構如下:

tbl_PIVD = pivID | prodID | Qty | ScaleID 

tbl_GRN = gID | pivID 

tbl_GRND = grndID | gID | prodID | Qty | ScaleID 

tbl_prod = prodID | ScaleID(SIunit) 

問題:獲得的數量(數量)和它的差 未決= ConvertScale(tbl_PIVD.Qty,tbl_PIVD.ScaleID,tbl_prodID.ScaleID) - ConvertScale(tbl_GRND.Qty,tbl_GRND.ScaleID,tbl_prodID.ScaleID) 從tbl_PIVD和tbl_GRND表,其中tbl_PIVD.pivID = tbl_GRN.pivID和 tbl_PIVD.prodID = tbl_GRND.prodID。減法是使兩個規模相等後進行,規模化使用功能ConvertScale

+0

請告訴我們你現在得到的結果,他的結果你實際上想要 –

+1

我想,你缺少tbl_puv和tbl_puvd表之間的映射。提及表格定義以獲得更多的說明。 –

+0

您是否介意閱讀您的問題並格式化您的代碼?根據讀者的解釋,是「購買詳細產品ID」一個字段還是三個或四個分開的字段? – Marco

回答

0

我嘗試過編輯您的查詢轉換:

declare @pending as numeric(18,2) 
    SELECT 
     top 1 @pending = isnull((([Convertscale](tbl_puv.Quantity, tbl_puvd.ScaleId, 
    p.StandardUnit)),0.00) - isnull(([Convertscale](tbl_reciptdetails.Quantity, tbl_reciptdetails.Scale, p.StandardUnit))),0.00) 
FROM 
    dbo.tbl_Product p 
INNER JOIN 
    dbo.tbl_puvd ON p.ProductId = dbo.tbl_puv.ProductId 
INNER JOIN 
    dbo.tbl_reciptdetails ON tbl_reciptdetails.ProductId = tbl_puvd.ProductId 
where 
tbl_puv.IsActive = 'True' AND tbl_receiptdetails.IsActive = 'True' AND tbl_puvd.PurchaseId = 10609 

select @pending