2013-10-09 77 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)");