我一直在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
非常感谢任何帮助。
答案 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;