BustedFuse Опубликовано 15.09.2022 в 12:13 Поделиться Опубликовано 15.09.2022 в 12:13 Товарищи, добрый день! Подскажите, в MySQL в таблице oc_product к какому столбцу относится вот это поле (с красной стрелкой)? Нужно 24 т. товаров прописать бонусные баллы, которые начисляются при покупке. Пробовал в столбец points, но он для строки выше на скрине. Присвоил одному из товаров в Группе клиентов бб вручную, попробовал отсортировал все столбцы в oc_product, но так свое значение присвоенное и не нашел. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AlexDW Опубликовано 15.09.2022 в 12:34 Поделиться Опубликовано 15.09.2022 в 12:34 18 минут назад, BustedFuse сказал: Присвоил одному из товаров в Группе клиентов бб вручную, попробовал отсортировал все столбцы в oc_product, но так свое значение присвоенное и не нашел. потому что бонусные баллы хранятся в таблице oc_product_reward 0 Цитата модули для удобной работы с Opencart Ссылка на комментарий Поделиться на другие сайты Поделиться
BustedFuse Опубликовано 15.09.2022 в 12:42 Автор Поделиться Опубликовано 15.09.2022 в 12:42 Спасибо, нашел. И свое значение присвоенное нашел. Получается у меня в таблице только есть одна строка для товара с id, которому я задал вручную через админку бб. А как прописать запрос для того, чтобы бб были присвоены для всех товаров? 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
BustedFuse Опубликовано 15.09.2022 в 13:05 Автор Поделиться Опубликовано 15.09.2022 в 13:05 Т.е. у меня там товары с id от 76416 до 101341. В таблице видна только строка с товаром, которому я задал бб вручную. Как я понимаю, нужно переменным points в таблице oc_product_reward присвоить значения для id товаров от 0 до +100500 из другой таблицы oc_product? 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Решение AlexDW Опубликовано 15.09.2022 в 15:03 Решение Поделиться Опубликовано 15.09.2022 в 15:03 подключиться к БД и выполнить запрос 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 Цитата модули для удобной работы с Opencart Ссылка на комментарий Поделиться на другие сайты Поделиться
BustedFuse Опубликовано 16.09.2022 в 10:38 Автор Поделиться Опубликовано 16.09.2022 в 10:38 Спасибо огромное! Попробую =) 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
BustedFuse Опубликовано 19.09.2022 в 08:57 Автор Поделиться Опубликовано 19.09.2022 в 08:57 Спасибо, получились! А если я вот в этой строке SELECT p.product_id, '1', '150' Сделаю так, чтобы бонусные баллы равнялись 3.5% от стоимости? это правильное выражение? SELECT p.product_id, '1', 'price * 0.035' 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AlexDW Опубликовано 19.09.2022 в 11:34 Поделиться Опубликовано 19.09.2022 в 11:34 почти, нужно p.price * 0.035 0 Цитата модули для удобной работы с Opencart Ссылка на комментарий Поделиться на другие сайты Поделиться
BustedFuse Опубликовано 19.09.2022 в 12:35 Автор Поделиться Опубликовано 19.09.2022 в 12:35 На этот раз не получилось. Первый раз сделал, запрос прошел успешно, но значения в столбце points не изменились. Сделал так UPDATE 'oc_product_reward' SET `points` = "" чтобы обнулить значения. Получилось. Сделал ваш запрос повторно вот с этим условим p.price * 0.035. БД пишет, что запрос прошел успешно, но значения не поменялись. Остались также равны 0. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
BustedFuse Опубликовано 19.09.2022 в 12:42 Автор Поделиться Опубликовано 19.09.2022 в 12:42 Попробовал еще раз. Запрос выполняется, но значения не меняются. Что-то не так делаю. 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AlexDW Опубликовано 20.09.2022 в 09:51 Поделиться Опубликовано 20.09.2022 в 09:51 так правильно, первый раз добавляли баллы для товаров, которые вообще отсутствовали в таблице очистите свою таблицу product_reward и выполните запрос заново 1 Цитата модули для удобной работы с Opencart Ссылка на комментарий Поделиться на другие сайты Поделиться
BustedFuse Опубликовано 27.09.2022 в 11:27 Автор Поделиться Опубликовано 27.09.2022 в 11:27 Спасибо! Попробую! Я думал, если сделать запрос с новыми значениями, то они перезапишутся в замен старых. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
BustedFuse Опубликовано 27.09.2022 в 11:42 Автор Поделиться Опубликовано 27.09.2022 в 11:42 В целом все хорошо получается, но при обработке запроса выходит ошибка Incorrect integer value Смущает БД именно это выражение 'p.price*0.015', т.к. если ввести целое значение, то запрос выполняется. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AlexDW Опубликовано 27.09.2022 в 16:32 Поделиться Опубликовано 27.09.2022 в 16:32 пробуйте вводить запрос именно как он написан также возможно у вас включен строгий режим 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 Цитата модули для удобной работы с Opencart Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.