-1

我有两张桌子:salesproductlist。假设我的表有这些 ff 值

这是 ff 值sales

id | pcode | qty_sold |
1  |  123  |  20      | 
2  |  123  |  20      | 

这是 ff 值productlist

id | pcode | pleft | 
6  |  123  |  20   |  
7  |  333  |  40   |

我的问题是:当我从中更新 1 个产品时,productlist它会正确更新为我要更新的产品,但其他产品数据变为 0。更新时的预期值productlist必须如下所示:

id | pcode | pleft | 
6  |  123  |  60   |  
7  |  333  |  40   |   

到目前为止我有这个代码:

mysql_query("UPDATE productlist SET pleft=pleft+(SELECT SUM(qty_sold) ".
            "FROM sales WHERE sales.pcode=productlist.pcode)"); 

但它显示如下:

id | pcode | pleft | 
6  |  123  |  60   |  
7  |  333  |  0    | 
4

3 回答 3

1

我猜你在你的陈述中错过了WHERE条款UPDATE,比如:

UPDATE productlist 
    SET pleft=pleft+(SELECT SUM(qty_sold) FROM sales WHERE sales.pcode=productlist.pcode)
WHERE productlist.pcode = "your_id";
于 2013-09-02T04:31:04.347 回答
1

您仅WHERE用于您的内部查询。

您必须使用WHERE外部查询来更新特定记录。

UPDATE productlist 
SET pleft=pleft+(SELECT SUM(qty_sold) FROM sales WHERE sales.pcode=productlist.pcode)
WHERE productlist.pcode = "id";
于 2013-09-02T04:33:01.783 回答
0

你得到'0'的原因是,你的选择返回'40'作为第一个ID,但没有返回第二个行。所以它被认为是空的。那就是你得到'0'作为第二个ID。尝试使用 l ifnull(select,0) 函数。

UPDATE productlist SET pleft=pleft+ifnull((SELECT SUM(qty_sold)
        FROM sales WHERE sales.pcode=productlist.pcode),0)
于 2013-09-02T06:56:20.507 回答