2013-05-09 63 views
0

好吧,我有一个查询,我需要在PHP在我的MySQL数据库运行只是想做到这一点的最好办法...我是否需要在mysql或其他使用PHP的方法中使用总和?

我需要所有的量添加的产品选项一起使用,以获取总数为产品数量。


表产品。

在产品表中,每个产品都有一个'product_id'。 每个产品都包含一个“数量”栏,在大多数情况下该数量不准确。

+-----------+------------+ 
| ProductID | Quantity | 
+-----------+------------+ 
|   1 | 3   | 
|   2 | 5   | 
|   3 | 1   | 
|   4 | 1   | 
|   5 | 4   | 
|   6 | 8   | 
|   7 | 2   | 
+-----------+------------+ 

表product_option_value。

在product_option_value表中,每个选项都使用'product_id',每个选项都包含一个'quantity'列。

+-------------------------+------------+---------------+ 
| product_option_value_id | product_id | quanity | 
+-------------------------+------------+---------------+ 
|   200   |  1  |  12  | 
|   200   |  1  |  11  | 
|   200   |  1  |  44  | 
|   200   |  1  |  4  | 
|   204   |  3  |  3  | 
|   204   |  3  |  7  | 
|   204   |  3  |  9  | 
+-------------------------+------------+---------------+ 

我需要从所有的“量”列的总和“product_option_value”更新表“产品”表“数量”的正确数量的列,其中的product_id是一样的产品PRODUCT_ID 。


我想使选项表下的所有数量的总和,并用它们来更新产品表数量值,但我不知道要做到这一点使用PHP MySQL中的最佳方式是什么?

+1

通常,当你正在做的是数据操作(没有逻辑)尽最大努力去做的D B。如果你需要做验证或其他形式的复杂逻辑,然后使用PHP。在这种情况下,我会使用SQL只有 – cernunnos 2013-05-09 08:23:01

+0

Thankyou的建议cernunnos,我用一个MySQL查询没有任何额外的PHP,它的工作很好,总和。 – matthew 2013-05-09 09:09:40

回答

0
UPDATE Product 
SET Product.Quantity=(
SELECT SUM(product_option_value.Quantity) 
FROM product_option_value 
WHERE product_option_value.product_id=Product.ProductID 
) 
+0

三江源手帕,我觉得这一定是直线前进,但我从来没有遇到一个和查询,我不知道它是否适合这个... – matthew 2013-05-09 08:11:48

+0

所以我不得不添加下划线和改变一些大写的信件然后它的工作!真的很感谢帮助:-)我正在一点一点的学习...... – matthew 2013-05-09 09:07:42

+0

Hanky在某些情况下只是一件事产品没有任何选项我不想要产品数量更新,有没有办法让一个条件MySQL的查询或将它在PHP中的条件? – matthew 2013-05-09 09:29:25

0

之内的更新都带有为SUM子查询的表连接: -

UPDATE Product a 
INNER JOIN (SELECT product_id, SUM(Quantity) AS SummedQty 
FROM product_option_value GROUP BY product_id) b 
ON b.product_id = a.ProductID 
SET a.Quantity = SummedQty 
相关问题