2017-08-23 3 views
0

Wir erstellten ein WPF-Anwendungsprojekt zur Fakturierung und Lagerverwaltung. In der Datenbank enthält eine Tabelle tbl_puv Kaufdetails Produkt-ID, Menge und Waagen-ID, Quittentabelle tbl_receipt Quittung wird für die erforderliche Menge gestellt. Nach jeder Quittung sollte ich tbl_puv der Restmenge des Produktes aktualisieren.SQL Server: Beitreten von drei Tabellen

Dies ist die Abfrage, die ich verwende:

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 

wo Convertscale ist Funktion skalarwertige Produkteinheit zur Standardeinheit zu konvertieren, bevor

In der obigen Abfrage Subtraktion, meine Tabellen sind:

  • tbl_puv --- Kauf Tabelle
  • tbl_puvd --- Einzelheiten zum Kauf Tabelle
  • tbl_receiptdetails --- Empfang Details Tabelle
  • tbl_product --- Produkttabelle

ich mehrere Ergebnisse bin immer mir bitte helfen bei der Abfrage .... Danke

Die wie folgt Tabellen mit Spalten gegliedert:

tbl_PIVD = pivID | prodID | Qty | ScaleID 

tbl_GRN = gID | pivID 

tbl_GRND = grndID | gID | prodID | Qty | ScaleID 

tbl_prod = prodID | ScaleID(SIunit) 

Problem: die Menge (Anzahl) und seine Differenz erhalten anhängigen = ConvertScale (tbl_PIVD.Qty, tbl_PIVD.ScaleID, tbl_prodID.ScaleID) - ConvertScale (tbl_GRND.Qty, tbl_GRND.ScaleID, tbl_prodID.ScaleID) von tbl_PIVD und tbl_GRND Tabelle, wo tbl_PIVD.pivID tbl_GRN.pivID = und tbl_PIVD.prodID = tbl_GRND.prodID. Subtraktion wird nach der Herstellung der beiden Skala gleich getan, Skala umgewandelt wird eine Funktion ConvertScale mit

+0

Bitte zeigen uns die Ergebnisse, die Sie jetzt bekommen, und er führt Sie eigentlich will –

+1

Ich denke, Sie fehlt Zuordnung zwischen Tbl_puv und Tbl_puvd Tabellen. Erwähnen Sie die Tabellendefinitionen für weitere Erläuterungen. –

+0

Würde es Ihnen etwas ausmachen, Ihre Frage zu lesen und Ihren Code zu formatieren? Ist "Kaufdetails-Produkt-ID" ein Feld oder 3 oder 4 separate Felder, abhängig von der Interpretation des Lesers? – Marco

Antwort

0

i versucht haben, Ihre Anfrage zu bearbeiten:

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