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

Php 使用SQL select查询的结果更新表,php,mysql,sql,Php,Mysql,Sql,我一直在一个zen cart电子商务网站上广泛工作,我对php有很好的了解,但对SQL只有基本的了解。 我的问题不涉及zen cart或php,因为我已经介绍了这一点,而是三个表之间的交互 表1:库存导出->列:项目数量、项目价格、项目库存 表2:zen_products_supplier->columns:products_id,australiait_code 表3:zen_products->columns(吨,但这里是相关列):产品id、产品价格 现在我想做的是通过选择item_num=

我一直在一个zen cart电子商务网站上广泛工作,我对php有很好的了解,但对SQL只有基本的了解。 我的问题不涉及zen cart或php,因为我已经介绍了这一点,而是三个表之间的交互

表1:库存导出->列:项目数量、项目价格、项目库存
表2:zen_products_supplier->columns:products_id,australiait_code
表3:zen_products->columns(吨,但这里是相关列):产品id、产品价格

现在我想做的是通过选择item_num=australiait_code的所有产品,用库存导出表中的item_价格更新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

如果有任何帮助,我们将不胜感激。

以下是您的主题的好答案:


可能您必须创建临时表。因为使用“从同一个表中选择”更新表时可能会出现问题。

如果要求使用库存导出表中的总商品价格更新zen_products表中的“商品价格”,对于商品编号=澳大利亚商品代码的所有商品,以下查询将起作用:

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 )
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
但是,如果要使用库存导出表中的总物料价格更新zen_products表中的“products_price”,该表中的物料编号=澳大利亚商品代码,并且zen_products_supplier中的产品id=zen_products表中更新的当前行的产品id,则以下查询将起作用:

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 )
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

希望这能有所帮助。

我解决了这个愚蠢的问题,只需将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;

可能重复:@Sumit在这个问题中只有两个表,如果我只使用两个表,这将很容易解决,但是使用第三个表会增加复杂性,这使得问题更加复杂。我可能还注意到,正如问题中提到的,在不同的表格中,列的名称不同,这也是不同的。也许我错了,但我看不出这个解决方案对我目前的问题有什么帮助。我相信你的第二个例子是正确的,除非我不想要总数。不过,我会看看能否从你的答案中找到解决方案。谢谢你的帮助,我目前没有足够的声誉来支持你的回答。我道歉。