2016-08-02 11 views
0

Guten Morgen. Ich möchte eine Frage stellen, aber vorher möchte ich erklären, was ich gerade habe, bevor ich die Frage stelle.Aktualisierung Tabelle mit Berechnung von 2 anderen Tabellen

Ich habe 3 Tabellen und sie sind.

Table: Receiving

enter image description here

Table: GeneralInventory

enter image description here

und letzte ist Table: item_master_list

enter image description here

Ich habe ein Programm in VB.Net, das den ff erledigen wird.

1.Based auf Table: Receiving i wird ein RINo wählen, und ich werde das Beispiel auf das Bild oben (RI00000001)

2.After Auswahl des RI00000001 in Table: Receiving verwenden werde ich die Taste POST drücken und danach diese ist was mein Code tut.

-Der Code prüft, ob die Daten aus der Spalte ItemCode von Table:Receiving hat die gleichen Daten in der Spalte ItemCode von Table: GeneralInventory.

-Nun, wenn der Vergleich wahr ist oder es gibt ein gleichen Daten aus beiden Tabellen die Spalt QtyPack und QtyStan von Table: Receiving hinzugefügt werden/SUM in der Spalte Qty von GeneralInventory

-Nun, wenn der Vergleich falsch oder Theres ist kein Vergleich zwischen zwei Tabellen, dann werden die Daten in GeneralInventory eingefügt.

Ich hoffe, Sie bekommen es aber wenn nicht hier ist das Beispielbild.

enter image description here

und nun für dieses Verfahren ist mein Code dies.

Code zum Finden.

Select * 
From 
    GeneralInventory GI 
Inner Join 
    Receiving RE on GI.ItemCode = RE.ItemCode 
Where RE.RINo = 'MyValue' 

Nun, wenn der Code oben wahr ist, dann ist dies der Code

UPDATE GeneralInventory GI 
INNER JOIN receiving RE ON GI.ItemCode = RE.ItemCode AND 
GI.Qty = RE.QtyPack 
SET GI.Qty = CAST(GI.Qty + RE.QtyPack + RE.QtyStan AS DECIMAL(6,2)) 
Where RE.RINo = 'MyValue' 

für die Aktualisierung oder wenn es falsch ist, dann ist dies der Code für das Einfügen.

INSERT INTO GeneralInventory(ItemCode, Qty) 
SELECT RE.ItemCode, RE.QtyPack 
FROM 
    Receiving RE LEFT JOIN 
    GeneralInventory GI ON GI.ItemCode = RE.ItemCode AND 
     GI.Qty =CAST(RE.QtyPack + Re.QtyStan AS DECIMAL(6,2)) 
WHERE RE.RINo = 'MyValue' 

Hier ist meine Frage und meine Frage an die Item_Master_List bezogen und hier ist es.

Wie kann ich so etwas erreichen?Zuerst werde ich die Table:GeneralInventory unter Verwendung der Table: Receiving aktualisieren Ich möchte einige Berechnungen in Table: item_master_list was ich meine ist, bevor ich aktualisieren oder die Daten in generalinventory einfügen, ich werde es in item_masterlist multiplizieren.

Wie der gleiche Wert in item_master_list finden dann multiplizieren sie die Spalte von QtyperUoM mit dem Wert in receiving verwenden, bevor es in generalinventory

Spar ich Sie es hoffen.

TYSM

+0

Gibt es eine Bedingung für die Multiplikation mit einer anderen Tabelle? –

+0

Siehe http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html –

+0

@ AT-2016 Ich denke, es gibt keine Bedingung, mit der es ist wie die Multiplikation der QtyPack * QtypeUoM –

Antwort

0
UPDATE generalinventory gi 
set gi.qty = (SELECT (r.QtyPack * r.QtyperUoM + r.QtySan) 
      from receiving r, item_master_list ml 
      where r.itemCode = ml.itemCode 
      and t.itemCode = gi.itemCode) 
1

die unten stehende Abfrage Verwenden Sie das Update zu tun:

UPDATE GeneralInventory SET Qty = (Qty * QtyperUoM) + l.QtyStan 
FROM GeneralInventory s INNER JOIN item_master_list i 
on s.ItemCode = i.ItemCode INNER JOIN Receiving l ON s.ItemCode = l.ItemCode 

Nur eine INNER in Bezug auf die Tabellenbeziehung JOIN hat.

+0

Es hat einen Fehler Sir und meine Frage ist, wie kann ich den 'QtyStan' hinzufügen? Ich meine 'QtyPack' *' QtyperUoM' + 'QtyStan' –

+0

Redigierte den Beitrag. Habe gerade das Gleiche gemacht - INNER JOIN. Da Sie den Artikelcode als FK haben, können Sie die Beziehung zwischen den Tabellen beibehalten. –

+0

es hat einen Fehler sir –

Verwandte Themen