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

Наши программы => УкрСклад => Тема розпочата: Кирилл від Січень 24, 2013, 19:54:25

Назва: Помогите удалить остатки с значением 0
Відправлено: Кирилл від Січень 24, 2013, 19:54:25
Помогите SQL запросом удалить позиции с остатком 0. Движений по этому товару не было. Позиций товара со значением 0 примерно 70тысяч
Назва: Re: Помогите удалить остатки с значением 0
Відправлено: valera_ua від Січень 31, 2013, 10:59:03
Если правильно понял вопрос Вам поможет вот этот скрипт (от админа)

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

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

Скрипт обнуляет количество с точностью до 0.0000001
Назва: Re: Помогите удалить остатки с значением 0
Відправлено: TheOK від Січень 31, 2013, 16:45:35

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

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) Удалить склад
Если же удаление вручную возможно, лучше делать все через ручное удаление.
Назва: Re: Помогите удалить остатки с значением 0
Відправлено: admin від Січень 31, 2013, 17:06:24
Этот код не удаляет товар, а округляет до нуля с точностью 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 одобрит

Мы такое конечно не одобряем но это работает, все на ваш страх и риск.
Назва: Re: Помогите удалить остатки с значением 0
Відправлено: Кирилл від Лютий 02, 2013, 00:08:07
Спасибо за помощь, но удалил по другому. Перенес все нулевые остатки в другую групу и нажал удалить.
Назва: Re: Помогите удалить остатки с значением 0
Відправлено: TheOK від Лютий 02, 2013, 00:54:59
Отличный способ. Подозреваю, что перенос в группу товара сделали запросом (это на много безопаснее, чем то, о чем писалось выше).
Для остальных, кто захочет удалить большое кол-во товара не используя SQL запросы такой метод:
Становитесь на "служебную" группу товаров Показать все группы. Сортируете/фильтруете товар по ко-ву. Тот товар, у которого кол-во 0, удаляете сочетанием клавиш Ctrl+D (другой товар, просто не удалится).
Назва: Re: Помогите удалить остатки с значением 0
Відправлено: Кирилл від Лютий 02, 2013, 12:55:41
С запросами я не дружу, я просто кучей выделил все позиции с 0 и нажал перенести в другую группу.