2013-10-09 4 views
0

У меня есть две таблицы. продаж и производства. некоторые из данных, существующих в обеих таблицах, являются общими. так что я хочу сделать, так это то, что я хочу обновлять выбранные поля в tbl-списке продуктов, где tbl данные prodctlist существуют в продажах tbl. Я использовал следующий ниже запрос, но проблема в том, что если данные из производственного списка не существуют в продажах, он становится нулевым. то, что я ищу в том, что если данные TBL ProductList не существует в продаже 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

те же выходные значения отображения, которые не существуют в другой таблице, обнуляются :( –

+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)"); 
Смежные вопросы