2013-10-09 41 views
0

我有两个表。销售和产品专家。这两个表中存在的一些数据是常见的。所以我想要做的是我想更新tbl productlist中的选定字段,其中tbl prodctlist数据存在于tbl销售中。我在下面使用了下面的查询,但问题是,如果来自produclist的数据在销售中不存在,它会变为空。我所期待的是,如果在TBL销售不存在从TBL产品列表的数据也不会变成零,更新更新时为空值

mysql_query("UPDATE productlist 
SET pleft=pleft+(SELECT SUM(qty) FROM sales 
WHERE (sales.name = productlist.pdesc) 
AND (sales.name1 = productlist.pdesc1))"); 

回答

0

之前,而不是停留它有什么价值相同你想使用COALESCE这需要第一个非空值:

SELECT SUM(COALESCE(qty, 0)) ... 
+0

相同的输出显示值在另一个表中不存在会变为null :( –

+0

我不理解您的评论。发生了什么事与你期待的是什么? –

0

可以使用IFNULL功能:

mysql_query("UPDATE productlist SET pleft=pleft + IFNULL((SELECT SUM(qty) FROM sales WHERE (sales.name = productlist.pdesc) AND (sales.name1 = productlist.pdesc1), 0)"); 

此外,如果数量字段可以为NULL,最好是有:

mysql_query("UPDATE productlist SET pleft=pleft + IFNULL((SELECT SUM(IFNULL(qty,0)) FROM sales WHERE (sales.name = productlist.pdesc) AND (sales.name1 = productlist.pdesc1), 0)");