使用SQL select查询的结果更新表

时间:2013-10-03 11:21:43

标签: php mysql sql

我一直在zen cart电子商务网站上进行过相当广泛的工作,我对PHP有很好的了解,但只有SQL的基本知识。 我的问题与zen cart或php有关,因为我已经涵盖了这个,而是三个表之间的交互。

表1:inventoryexport - >列:item_num,item_price,item_stock
表2:zen_products_supplier - >列:products_id,australiait_code
表3:zen_products - >列(吨,但这里是相关的):products_id,products_price

现在我想做的是通过选择item_num = australiait_code中的所有产品,使用库存导出表中的item_price更新zen_products表中的“products_price”。

我可以使用此查询选择所需的信息,但我不知道如何将其直接插入到zen_products表的更新查询中。

SELECT zen_products_supplier.products_id, inventoryexport.item_price, inventoryexport.item_stock
FROM zen_products_supplier
INNER JOIN inventoryexport
ON inventoryexport.item_num=zen_products_supplier.australiait_code

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

以下是您主题的好答案: MySQL - UPDATE query based on SELECT Query

可能你必须创建临时表。因为使用同一个表中的select更新表可能会出现问题。

答案 1 :(得分:0)

如果要求更新zen_products表中的“products_price”,其中item_num = australiait_code的所有产品的库存导出表中的item_price总数,则以下查询将起作用:

update zen_products  
set products_price  = (select sum(ie.item_price) 
                       from inventoryexport ie join zen_products_supplier zps on ie.item_num = 
                       zps.australiait_code )

但是如果你想更新zen_products表中的“products_price”,其中所有产品的库存导出表中的item_price总数为item_num = australiait_code,而zen_products_supplier中的产品ID = zen_products中当前行的产品ID表,以下查询将起作用:

update zp
set zp.products_price = (select sum(ie.item_price)                     
                     from zen_products_supplier zps  
                     join inventoryexport ie on ie.item_num = zps.australiait_code
                     where zps.products_id = zp.products_id)
from zen_products as zp

希望这有帮助。

答案 2 :(得分:0)

我通过简单地将SQL分成两个步骤来解决我的愚蠢问题。

UPDATE 
inventoryexport ie, zen_products_supplier zps 
SET 
ie.products_id=zps.products_id 
WHERE ie.item_num=zps.australiait_code;

然后执行以下命令:

UPDATE
zen_products zp, inventoryexport ie 
SET 
zp.products_quantity=ie.item_stock, zp.products_price=ie.item_price 
WHERE 
ie.products_id=zp.products_id;