根据获得产品组合的可能选项,产品具有不同的选项(属性)。我想为我的产品编辑每个组合的价格。对于每个组合,价格应等于该组合所有属性的总和。 注意:相同的属性可能会因产品而对价格产生两种不同的影响。
我有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行的')'附近使用正确的语法
答案 0 :(得分:0)
实际上,以下查询有效。
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中的“模拟请求”按钮时。但是,当我单击“执行”按钮时,一切正常。
谢谢大家的帮助。