Товар имеет разные параметры (атрибуты), в зависимости от возможных вариантов вы получаете комбинации продуктов. Я хочу изменить цену каждого сочетания для моих продуктов. для каждой комбинации цена должна быть равна сумме всех атрибутов этой комбинации.
примечание: один и тот же атрибут может оказывать два разных влияния на цену в зависимости от продукта.
У меня есть 3 таблицы следующим образом:
ps_product_attribute_shop - список атрибутов, влияющих на цену в зависимости от комбинации (id_product_attribute).
+----------------------+--------+------------+
| id_product_attribute | price | id_product |
+----------------------+--------+------------+
| 27934 | 50.000 | 9779 |
+----------------------+--------+------------+
| 27935 | 24.000 | 9780 |
+----------------------+--------+------------+
ps_attribute_impact - список каждого атрибута и продукта, к которому они относятся, и их влияние на цену
+------------+--------------+--------+
| id_product | id_attribute | price |
+------------+--------------+--------+
| 9778 | 45 | 10.000 |
+------------+--------------+--------+
| 9779 | 46 | 00.000 |
+------------+--------------+--------+
| 9779 | 47 | 00.000 |
+------------+--------------+--------+
| 9779 | 55 | 00.000 |
+------------+--------------+--------+
| 9779 | 56 | 46.000 |
+------------+--------------+--------+
| 9779 | 57 | 67.000 |
+------------+--------------+--------+
ps_product_attribute_combination - сопоставление атрибутов и комбинаций продуктов (здесь комбинация 27934 имеет два атрибута => 46, 56)
+--------------+----------------------+
| id_attribute | id_product_attribute |
+--------------+----------------------+
| 46 | 27934 |
+--------------+----------------------+
| 56 | 27934 |
+--------------+----------------------+
| 46 | 27935 |
+--------------+----------------------+
| 57 | 27935 |
+--------------+----------------------+
Я пытаюсь обновить все цены с ps_product_attribute_shop
для каждой комбинации продуктов.
Я пытаюсь использовать следующий запрос в phMyAdmin:
UPDATE ps_product_attribute_shop
SET ps_product_attribute_shop.price =
(
SELECT SUM(ps_attribute_impact.price)
FROM ps_attribute_impact
WHERE ps_product_attribute_shop.id_product = ps_attribute_impact.id_product
AND ps_attribute_impact.id_attribute IN
(
SELECT ps_product_attribute_combination.id_attribute
FROM ps_product_attribute_combination
WHERE ps_product_attribute_combination.id_product_attribute =
ps_product_attribute_shop.id_product_attribute
)
);
но я получил следующую ошибку в phpMyAdmin:
# 1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с ')' в строке 1