Помогите SQL запросом удалить позиции с остатком 0. Движений по этому товару не было. Позиций товара со значением 0 примерно 70тысяч
Если правильно понял вопрос Вам поможет вот этот скрипт (от админа)
1. Сделать резервную копию базы
2. В меню Опции: SQL менеджер выполнить
следуючий код:
UPDATE
tovar_zal tz
SET
tz.kolvo = 0
WHERE
tz.kolvo < 0.0000001 AND tz.kolvo > -0.0000001
Скрипт обнуляет количество с точностью до 0.0000001
Запросы из этого сообщения нельзя применять для описанного случая!
Они удаляют данные из вашей базы (как и описано ниже)!
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) Удалить склад
Если же удаление вручную возможно, лучше делать все через ручное удаление.
Этот код не удаляет товар, а округляет до нуля с точностью 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 одобрит
Мы такое конечно не одобряем но это работает, все на ваш страх и риск.
Спасибо за помощь, но удалил по другому. Перенес все нулевые остатки в другую групу и нажал удалить.
Отличный способ. Подозреваю, что перенос в группу товара сделали запросом (это на много безопаснее, чем то, о чем писалось выше).
Для остальных, кто захочет удалить большое кол-во товара не используя SQL запросы такой метод:
Становитесь на "служебную" группу товаров Показать все группы. Сортируете/фильтруете товар по ко-ву. Тот товар, у которого кол-во 0, удаляете сочетанием клавиш Ctrl+D (другой товар, просто не удалится).
С запросами я не дружу, я просто кучей выделил все позиции с 0 и нажал перенести в другую группу.