Страница 1 из 1
Как массово SQL-запросом добавить 10 грн к товарам в 25 категориях
Добавлено: 06.02.2019, 09:53
dimon
Здравствуйте!
Сайт на Окей 1.2.4.
Как массово SQL-запросом добавить 10 грн ко всем товарам в определенных 25 категориях?
(в каждом товаре 3 варианта)
Добавлено: 06.02.2019, 12:02
makki
Код: Выделить всё
UPDATE s_variants AS v SET v.price = v.price + 10 WHERE
v.product_id in(SELECT pc.product_id FROM s_products_categories AS pc WHERE pc.category_id in(40,50))
40 и 50 - это id категорий
Добавлено: 06.02.2019, 12:12
korshunov
makki писал(а):Код: Выделить всё
UPDATE s_variants AS v SET v.price = v.price + 10 WHERE
v.product_id in(SELECT pc.product_id FROM s_products_categories AS pc WHERE pc.category_id in(array(40,50))
40 и 50 - это id категорий
1. Префикс названий таблиц s_ в актуальных версиях давно уже другой,
2. array(40,50) - дает ошибку,
3. Со скобками непорядок - еще одна ошибка.
У меня работает так
UPDATE ok_variants AS v SET v.price = v.price + 10 WHERE v.product_id in(SELECT pc.product_id FROM ok_products_categories AS pc WHERE pc.category_id in(40,50));
Добавлено: 06.02.2019, 12:20
makki
korshunov писал(а):1. Префикс названий таблиц s_ в актуальных версиях давно уже другой,
2. array(40,50) - дает ошибку,
3. Со скобками непорядок - еще одна ошибка.
У меня работает так
UPDATE ok_variants AS v SET v.price = v.price + 10 WHERE v.product_id in(SELECT pc.product_id FROM ok_products_categories AS pc WHERE pc.category_id in(40,50));
Знал что вы первыми ответите ))
Написано
Сайт на Окей 1.2.4.
У этой версии префикс s_
Ошибки исправил. Спасибо
Добавлено: 06.02.2019, 13:28
dimon
Спасибо, все получилось, цены поменялись.
Добавлено: 06.05.2019, 08:57
dimon
Как массово SQL-запросом добавить 20% ко всем товарам в определенных 5 категориях?
Добавлено: 06.05.2019, 09:58
korshunov
UPDATE ok_variants AS v SET v.price = v.price * 1.2 WHERE v.product_id in(SELECT pc.product_id FROM ok_products_categories AS pc WHERE pc.category_id in(40,50,60,70,80));
Для версии 1 использовать s_variants.
Добавлено: 10.05.2019, 13:19
zyxer
korshunov писал(а):UPDATE ok_variants AS v SET v.price = v.price * 1.2 WHERE v.product_id in(SELECT pc.product_id FROM ok_products_categories AS pc WHERE pc.category_id in(40,50,60,70,80));
Для версии 1 использовать s_variants.
только в данном запросе один недочет.
Не понятно (не опытному человеку) как определить эти ID категорий (если мы обновляем главные категории, а товар где-то в подкатегориях).
korshunov писал(а):makki писал(а):Код: Выделить всё
UPDATE s_variants AS v SET v.price = v.price + 10 WHERE
v.product_id in(SELECT pc.product_id FROM s_products_categories AS pc WHERE pc.category_id in(array(40,50))
40 и 50 - это id категорий
1. Префикс названий таблиц s_ в актуальных версиях давно уже другой,
2. array(40,50) - дает ошибку,
3. Со скобками непорядок - еще одна ошибка.
У меня работает так
UPDATE ok_variants AS v SET v.price = v.price + 10 WHERE v.product_id in(SELECT pc.product_id FROM ok_products_categories AS pc WHERE pc.category_id in(40,50));
Здесь есть ошибочка с ценами, нужно было добавить 10 грн, а добавили 10 не пойми чего (мультивалюты), и недочет выше.
Я так понимаю спрашивающего это устроило, но кто в будущем сюда попадет, чтобы понимал что нужно учитывать еще и валюты...
Добавлено: 10.05.2019, 14:17
korshunov
zyxer писал(а): Здесь есть ошибочка с ценами, нужно было добавить 10 грн, а добавили 10 не пойми чего (мультивалюты), и недочет выше.
Если в запросе в конце приписать AND v.currency_id=2, то будет добавление только по товарам, у которых цены заданы в одной валюте. Если надо, по прочим валютам аналогичные запросы делать...
Добавлено: 10.05.2019, 14:33
zyxer
да, так будет пользователям счастье ))