2014-10-06 30 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

相关问题