• Ласкаво просимо на Спільнота для обміну досвідом між користувачами програм УкрБланк, УкрСклад, УкрЗарплата.
 

Помогите удалить остатки с значением 0

Автор Кирилл, Січень 24, 2013, 19:54:25

Попередня тема - Наступна тема

0 Користувачі і 3 Гостей дивляться цю тему.

Кирилл

Помогите SQL запросом удалить позиции с остатком 0. Движений по этому товару не было. Позиций товара со значением 0 примерно 70тысяч

valera_ua

Если правильно понял вопрос Вам поможет вот этот скрипт (от админа)

1. Сделать резервную копию базы
2. В меню Опции: SQL менеджер выполнить
   следуючий код:

UPDATE
  tovar_zal tz
SET
  tz.kolvo = 0
WHERE
  tz.kolvo < 0.0000001 AND tz.kolvo > -0.0000001

Скрипт обнуляет количество с точностью до 0.0000001

TheOK

#2

Запросы из этого сообщения нельзя применять для описанного случая!
Они удаляют данные из вашей базы (как и описано ниже)!


70 тысяч  немало..
Я предпочитаю все делать средствами программы, впрочем, если admin одобрит следующие действия (т.к. движения товара не было, то думаю, что это может подойти).
Вы хотите удалить весь товар с какого-то конкретного склада или со всех.
Если с конкретного склада, то подойдет следующее:



0) Самое важное, сделать архив базы!!!!
Дальше все делаем в SQL менеджере
0.а) Переименуйте созданный склад на какое-то уникальное имя, чтобы не спутать его ни с каким другим
1) Узнайте № склада (скопируйте текст в SQL менеджер и запустите):
Select s.num, s.name from Sklad_names s where s.visible=1
(напротив имени склада с нужным для вас именем будет № этого склада)

2) Удаляем все остатки со склада (товар после этого не отображается на выбранном складе).
В SQL менеджере :
Не используйте нижеуказанный запрос (оставлен только на память, т.к. уже цитировался).

Delete from tovar_zal tz where tz.sklad_id = X
где X- № слада из предыдущего шага
3) Удалить вручную все группы товаров из склада
4) Удалить склад
Если же удаление вручную возможно, лучше делать все через ручное удаление.
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

admin

Этот код не удаляет товар, а округляет до нуля с точностью 0.0000001

UPDATE
  tovar_zal tz
SET
  tz.kolvo = 0
WHERE
  tz.kolvo < 0.0000001 AND tz.kolvo > -0.0000001


Этот код удаляет весь товар с склада:

Delete from tovar_zal tz where tz.sklad_id = X 

в первом сообщении просили удалять вроде только с нулем, это будет так:

DELETE FROM tovar_zal tz WHERE tz.sklad_id = X AND tz.kolvo = 0

Цитата: TheOK від Січень 31, 2013, 16:45:35
если admin одобрит

Мы такое конечно не одобряем но это работает, все на ваш страх и риск.

Кирилл

Спасибо за помощь, но удалил по другому. Перенес все нулевые остатки в другую групу и нажал удалить.

TheOK

Отличный способ. Подозреваю, что перенос в группу товара сделали запросом (это на много безопаснее, чем то, о чем писалось выше).
Для остальных, кто захочет удалить большое кол-во товара не используя SQL запросы такой метод:
Становитесь на "служебную" группу товаров Показать все группы. Сортируете/фильтруете товар по ко-ву. Тот товар, у которого кол-во 0, удаляете сочетанием клавиш Ctrl+D (другой товар, просто не удалится).
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

Кирилл

С запросами я не дружу, я просто кучей выделил все позиции с 0 и нажал перенести в другую группу.