2014-10-06 34 views
0

我想用當前的qty +來自另一個表的qty更新prod_qty;您不能在FROM子句中指定目標表'tbl_prod'進行更新

它與SET SQL_SAFE_UPDATES = 0工作臺運行;但是當我嘗試在VB.net運行它時出現錯誤說

你不能在指定目標表 'tbl_prod' FOR UPDATE FROM子句

這裏的查詢

Update tbl_prod 
set prod_qty = prod_qty+ 
    (Select itp_needQty 
    from tbl_itmonpur 
    where itp_prodID = prod_id 
    and itp_status = 'PENDING' 
    and itp_InvoiceNo = 1004) 
where prod_id = 
    (Select itp_prodID 
    from tbl_itmonpur 
    where itp_prodID = prod_id 
    and itp_status = 'PENDING' 
    and itp_InvoiceNo = 1004); 

我只是一個學生,所以請容易對我:)謝謝!

con.Open() 
qry = "UPDATE tbl_prod " + _ 
"Join tbl_itmonpur " + _ 
"ON tbl_itmonpur.itp_prodID = tbl_prod.prod_id " + _ 
"SET tbl_prod.prod_qty = tbl_prod.prod_qty + tbl_itmonpur.itp_needQty " + _ 
"WHERE tbl_itmonpur.itp_status = 'PENDING' AND tbl_itmonpur.itp_InvoiceNo @InvoiceNo; " 
cmd = New MySqlCommand(qry, con) 
With cmd 
    .Parameters.AddWithValue("@InvoiceNo", txtInvoicePend.Text) 
End With 
cmd.ExecuteNonQuery() 
con.Close() 

回答

0

貌似需要的數量是從tbl_itmonpur表,其中itp_prodID列值相匹配prod_idtbl_prod表,所以你需要加入這兩個表如下

UPDATE tbl_prod 
JOIN tbl_itmonpur 
    ON tbl_itmonpur.itp_prodID = tbl_prod.prod_id 
SET tbl_prod.prod_qty = tbl_prod.prod_qty + tbl_itmonpur.itp_needQty 
WHERE tbl_itmonpur.itp_status = 'PENDING' 
AND tbl_itmonpur.itp_InvoiceNo = 1004; 
+0

我已經試過您的解決方案和再次它適用於工作臺但不是在vb.net 它說,你不能在FROM子句 – 2014-10-06 02:31:28

+0

我做先生指定目標表「tbl_prod」的更新:)也許有什麼毛病我在vb.net解決方案? – 2014-10-06 02:35:40

+0

請編輯您的問題並添加vb.net代碼。 – ekad 2014-10-06 02:36:18

相關問題