Перейти к содержанию

Столбец в oc_product для бонусных баллов


Перейти к решению Решено AlexDW,

Рекомендуемые сообщения

Товарищи, добрый день!

 

Подскажите, в MySQL в таблице oc_product к какому столбцу относится вот это поле (с красной стрелкой)? Нужно 24 т. товаров прописать бонусные баллы, которые начисляются при покупке. Пробовал в столбец points, но он для строки выше на скрине. Присвоил одному из товаров в Группе клиентов бб вручную, попробовал отсортировал все столбцы в oc_product, но так свое значение присвоенное и не нашел. 

 

image.png.53d664ade603c5465086d70d4fab6a2f.png

Ссылка на комментарий
Поделиться на другие сайты

Воспользуйтесь расширенным поиском по форуму opencart Воспользоваться поиском

Ознакомьтесь с руководством по использованию opencart Перейти к Документации

Расширьте возможности интернет-магазина дополнениями Подобрать Модуль

Выберите исполнителя для вашего технического задания Выбрать Исполнителя

18 минут назад, BustedFuse сказал:

Присвоил одному из товаров в Группе клиентов бб вручную, попробовал отсортировал все столбцы в oc_product, но так свое значение присвоенное и не нашел. 

потому что бонусные баллы хранятся в таблице oc_product_reward

Ссылка на комментарий
Поделиться на другие сайты

Спасибо, нашел. И свое значение присвоенное нашел. Получается у меня в таблице только есть одна строка для товара с id, которому я задал вручную через админку бб. А как прописать запрос для того, чтобы бб были присвоены для всех товаров?

Ссылка на комментарий
Поделиться на другие сайты

Т.е. у меня там товары с id от 76416 до 101341.

В таблице видна только строка с товаром, которому я задал бб вручную.

image.png.5184c73e421cd5e0d9b0ca03b322518a.png

Как я понимаю, нужно переменным points в таблице oc_product_reward присвоить значения для id товаров от 0 до +100500 из другой таблицы oc_product? 

Ссылка на комментарий
Поделиться на другие сайты

  • Решение

подключиться к БД и выполнить запрос

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 согласно заданному диапазону

Ссылка на комментарий
Поделиться на другие сайты

Спасибо, получились!

 

А если я вот в этой строке 

SELECT p.product_id, '1', '150'

Сделаю так, чтобы бонусные баллы равнялись 3.5% от стоимости? это правильное выражение?

SELECT p.product_id, '1', 'price * 0.035'

 

Ссылка на комментарий
Поделиться на другие сайты

На этот раз не получилось. Первый раз сделал, запрос прошел успешно, но значения в столбце points не изменились.

 

Сделал так UPDATE 'oc_product_reward' SET `points` = "" чтобы обнулить значения. Получилось.

 

Сделал ваш запрос повторно вот с этим условим p.price * 0.035. БД пишет, что запрос прошел успешно, но значения не поменялись. Остались также равны 0. 

 

 

Ссылка на комментарий
Поделиться на другие сайты

Попробовал еще раз. Запрос выполняется, но значения не меняются. Что-то не так делаю.

 

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

 

image.png.988e29118ddab1c5c2fd637d68e361fb.png

 

Ссылка на комментарий
Поделиться на другие сайты

так правильно, первый раз добавляли баллы для товаров, которые вообще отсутствовали в таблице

очистите свою таблицу product_reward и выполните запрос заново

Ссылка на комментарий
Поделиться на другие сайты

В целом все хорошо получается, но при обработке запроса выходит ошибка Incorrect integer value

Смущает БД именно это выражение 'p.price*0.015', т.к. если ввести целое значение, то запрос выполняется. 

Ссылка на комментарий
Поделиться на другие сайты

пробуйте вводить запрос именно как он написан

 

также возможно у вас включен строгий режим 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'");

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...