Страница 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
да, так будет пользователям счастье ))