使用特定数据更新查询

时间:2013-09-02 04:26:54

标签: php mysql

我有两个表:salesproductlist。假设我的表有这些ff值

这是sales

的ff值
id | pcode | qty_sold |
1  |  123  |  20      | 
2  |  123  |  20      | 

这是productlist

的ff值
id | pcode | pleft | 
6  |  123  |  20   |  
7  |  333  |  40   |

我的问题是:当我从productlist更新1个产品时,它会使用我想要更新的产品正确更新,但其他产品数据会变为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    | 

3 个答案:

答案 0 :(得分:1)

我猜您在WHERE声明中错过了UPDATE条款,例如:

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

答案 1 :(得分:1)

您的内部查询仅使用WHERE

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

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

答案 2 :(得分: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)