Ниже приведены три таблицы (см. Также в приложении)
product_attribute_shop
+----------------------+--------+------------+
| id_product_attribute | price | id_product |
+----------------------+--------+------------+
| 27934 | 50.000 | 9779 |
+----------------------+--------+------------+
| 27935 | 24.000 | 9780 |
+----------------------+--------+------------+
attribute_impact
+------------+--------------+--------+
| id_product | id_attribute | price |
+------------+--------------+--------+
| 9779 | 45 | 00.000 |
+------------+--------------+--------+
| 9779 | 46 | 00.000 |
+------------+--------------+--------+
| 9779 | 47 | 00.000 |
+------------+--------------+--------+
| 9779 | 55 | 00.000 |
+------------+--------------+--------+
| 9779 | 56 | 46.000 |
+------------+--------------+--------+
| 9779 | 57 | 67.000 |
+------------+--------------+--------+
product_attribute_combination
+--------------+----------------------+
| id_attribute | id_product_attribute |
+--------------+----------------------+
| 46 | 27934 |
+--------------+----------------------+
| 56 | 27934 |
+--------------+----------------------+
| 46 | 27935 |
+--------------+----------------------+
| 57 | 27935 |
+--------------+----------------------+
Как мне обновить цену стола product_attribute_shop
.
Для каждого id_product_attribute
цена должна быть равна сумме атрибутов цены из таблицы attribute_impact
, когда эти атрибуты имеют одинаковые id_product_attribute
?
Edit:
Вот пример моих 3 таблиц:
product_attribute_combination
attribute_impact
product_attribute_shop
Я хочу обновить цену product_attribute_shop, где id_product_attribute = 27934. Для этого мне нужно получить совпадающие атрибуты в product_attribute_combination (ища тот же id_product_attribute) и затем сделать сумму цены этих атрибутов из таблицы attribute_impact.
В product_attribute_shop, где id_product_attribute = 27934, цена должна быть (46,0 + 0,00) = 46,0 вместо 50,00.
ОТВЕТ: Для редактирования цены всех комбинаций я использовал следующий запрос:
UPDATE product_attribute_shop
SET product_attribute_shop.price =
(
SELECT SUM(attribute_impact.price)
FROM attribute_impact
WHERE product_attribute_shop.id_product = attribute_impact.id_product
AND attribute_impact.id_attribute IN
(
SELECT product_attribute_combination.id_attribute
FROM product_attribute_combination
WHERE product_attribute_combination.id_product_attribute =
product_attribute_shop.id_product_attribute
)
);