BustedFuse Posted September 15, 2022 at 12:13 PM Share Posted September 15, 2022 at 12:13 PM Товарищи, добрый день! Подскажите, в MySQL в таблице oc_product к какому столбцу относится вот это поле (с красной стрелкой)? Нужно 24 т. товаров прописать бонусные баллы, которые начисляются при покупке. Пробовал в столбец points, но он для строки выше на скрине. Присвоил одному из товаров в Группе клиентов бб вручную, попробовал отсортировал все столбцы в oc_product, но так свое значение присвоенное и не нашел. 0 Quote Link to comment Share on other sites More sharing options...
AlexDW Posted September 15, 2022 at 12:34 PM Share Posted September 15, 2022 at 12:34 PM 18 минут назад, BustedFuse сказал: Присвоил одному из товаров в Группе клиентов бб вручную, попробовал отсортировал все столбцы в oc_product, но так свое значение присвоенное и не нашел. потому что бонусные баллы хранятся в таблице oc_product_reward 0 Quote модули для удобной работы с Opencart Link to comment Share on other sites More sharing options...
BustedFuse Posted September 15, 2022 at 12:42 PM Author Share Posted September 15, 2022 at 12:42 PM Спасибо, нашел. И свое значение присвоенное нашел. Получается у меня в таблице только есть одна строка для товара с id, которому я задал вручную через админку бб. А как прописать запрос для того, чтобы бб были присвоены для всех товаров? 0 Quote Link to comment Share on other sites More sharing options...
BustedFuse Posted September 15, 2022 at 01:05 PM Author Share Posted September 15, 2022 at 01:05 PM Т.е. у меня там товары с id от 76416 до 101341. В таблице видна только строка с товаром, которому я задал бб вручную. Как я понимаю, нужно переменным points в таблице oc_product_reward присвоить значения для id товаров от 0 до +100500 из другой таблицы oc_product? 0 Quote Link to comment Share on other sites More sharing options...
Solution AlexDW Posted September 15, 2022 at 03:03 PM Solution Share Posted September 15, 2022 at 03:03 PM подключиться к БД и выполнить запрос INSERT IGNORE INTO `oc_product_reward` (`product_id`, `customer_group_id`, `points`) SELECT p.product_id, '1', '150' FROM `oc_product_reward` pr RIGHT JOIN `oc_product` p USING (product_id) WHERE pr.product_id IS NULL AND p.product_id BETWEEN 76416 AND 101341 где 1 - id нужной группы покупателей 150 - число бонусных баллов добавит бб для товаров, id которых еще нет в таблице product_reward согласно заданному диапазону 1 Quote модули для удобной работы с Opencart Link to comment Share on other sites More sharing options...
BustedFuse Posted September 16, 2022 at 10:38 AM Author Share Posted September 16, 2022 at 10:38 AM Спасибо огромное! Попробую =) 0 Quote Link to comment Share on other sites More sharing options...
BustedFuse Posted September 19, 2022 at 08:57 AM Author Share Posted September 19, 2022 at 08:57 AM Спасибо, получились! А если я вот в этой строке SELECT p.product_id, '1', '150' Сделаю так, чтобы бонусные баллы равнялись 3.5% от стоимости? это правильное выражение? SELECT p.product_id, '1', 'price * 0.035' 0 Quote Link to comment Share on other sites More sharing options...
AlexDW Posted September 19, 2022 at 11:34 AM Share Posted September 19, 2022 at 11:34 AM почти, нужно p.price * 0.035 0 Quote модули для удобной работы с Opencart Link to comment Share on other sites More sharing options...
BustedFuse Posted September 19, 2022 at 12:35 PM Author Share Posted September 19, 2022 at 12:35 PM На этот раз не получилось. Первый раз сделал, запрос прошел успешно, но значения в столбце points не изменились. Сделал так UPDATE 'oc_product_reward' SET `points` = "" чтобы обнулить значения. Получилось. Сделал ваш запрос повторно вот с этим условим p.price * 0.035. БД пишет, что запрос прошел успешно, но значения не поменялись. Остались также равны 0. 0 Quote Link to comment Share on other sites More sharing options...
BustedFuse Posted September 19, 2022 at 12:42 PM Author Share Posted September 19, 2022 at 12:42 PM Попробовал еще раз. Запрос выполняется, но значения не меняются. Что-то не так делаю. INSERT IGNORE INTO `oc_tak_product_reward` (`product_id`, `customer_group_id`, `points`) SELECT p.product_id, '1', 'p.price * 0.015' FROM `oc_tak_product_reward` pr RIGHT JOIN `oc_tak_product` p USING (product_id) WHERE pr.product_id IS NULL AND p.product_id BETWEEN 76416 AND 101341 0 Quote Link to comment Share on other sites More sharing options...
AlexDW Posted September 20, 2022 at 09:51 AM Share Posted September 20, 2022 at 09:51 AM так правильно, первый раз добавляли баллы для товаров, которые вообще отсутствовали в таблице очистите свою таблицу product_reward и выполните запрос заново 1 Quote модули для удобной работы с Opencart Link to comment Share on other sites More sharing options...
BustedFuse Posted September 27, 2022 at 11:27 AM Author Share Posted September 27, 2022 at 11:27 AM Спасибо! Попробую! Я думал, если сделать запрос с новыми значениями, то они перезапишутся в замен старых. 0 Quote Link to comment Share on other sites More sharing options...
BustedFuse Posted September 27, 2022 at 11:42 AM Author Share Posted September 27, 2022 at 11:42 AM В целом все хорошо получается, но при обработке запроса выходит ошибка Incorrect integer value Смущает БД именно это выражение 'p.price*0.015', т.к. если ввести целое значение, то запрос выполняется. 0 Quote Link to comment Share on other sites More sharing options...
AlexDW Posted September 27, 2022 at 04:32 PM Share Posted September 27, 2022 at 04:32 PM пробуйте вводить запрос именно как он написан также возможно у вас включен строгий режим mysql пробуйте в файле system\library\db\mysqli.php заменить строку $this->connection->query("SET SQL_MODE = ''"); на $this->connection->query("SET SESSION sql_mode = 'NO_ZERO_IN_DATE,NO_ENGINE_SUBSTITUTION'"); 0 Quote модули для удобной работы с Opencart Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.