Jump to content

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


BustedFuse
 Share

Go to solution Solved by AlexDW,

Recommended Posts

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

 

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

 

image.png.53d664ade603c5465086d70d4fab6a2f.png

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

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

image.png.5184c73e421cd5e0d9b0ca03b322518a.png

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

Link to comment
Share on other sites

  • Solution

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

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

Link to comment
Share on other sites

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

 

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

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

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

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

 

Link to comment
Share on other sites

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

 

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

 

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

 

 

Link to comment
Share on other sites

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

 

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

 

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

 

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

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...