有三个表格:
shop_product_skus - 第1项产品的表格(1对多)
shop_product_skus(id,product_id,sku,sort,name,image_id,price,primary_price,purchase_price,compare_price,count,available,dimension_id,file_name,file_size,file_description,virtual)
shop_product_stocks - 不同仓库中有多少产品的表格
shop_product_stocks(sku_id, stock_id, product_id, count)
shop_product_ostatki - 这是一个临时表,其中包含来自一个仓库的产品,价格和sku的数量,例如stock_id = 1(每30分钟更新一次)
shop_product_ostatki (id, sku, count, price)
外键关系
shop_product_skus.product_id = shop_product_stocks.product_id
shop_product_skus.sku = shop_product_ostatki.sku
shop_product_skus.id = shop_product_stocks.sku_id
现在我需要更新shop_product_ostatki
表shop_product_skus
update shop_product_skus.price = shop_product_ostatki.price * 1.07,
shop_product_skus.purchase_price = shop_product_ostatki.price * 0.7
where shop_product_skus.sku = shop_product_ostatki.sku
表shop_product_stocks
update if there is no prompt to add
shop_product_stocks.count = shop_product_ostatki.count,
shop_product_stocks.price = shop_product_ostatki.price * 1.07
where shop_product_skus.sku = shop_product_ostatki.sku
and shop_product_skus.id = shop_product_stocks.sku_id
可能解释有点令人困惑,我在一个查询中全部完成。
4天我一直在努力解决这个问题,通过stackoverflow搜索没有找到类似的问题:(
抱歉我的英语
更新 http://sqlfiddle.com/#!2/90f67
更新 我试试这个,它不起作用
INSERT INTO shop_product_stocks (sku_id ,stock_id ,product_id ,'count')
(SELECT id.b ,product_id.b ,sku.b ,sort.b ,name.b ,image_id.b, price.b ,primary_price.b ,purchase_price.b ,available.b FROM shop_product_skus b
LEFT JOIN shop_product_ostatki c ON c.sku = b.sku
LEFT JOIN shop_product_skus a ON a.sku = c.sku
WHERE shop_product_stocks.stock_id = 1
)
ON DUPLICATE KEY UPDATE
'count' = 'count'.c
更新 选择
中的错误SELECT * FROM shop_product_skus AS b
LEFT JOIN shop_product_ostatki_sander AS c ON c.sku = b.sku
LEFT JOIN shop_product_stocks AS a ON a.sku_id = b.id
WHERE a.stock_id = 1
但是所有expr都没有用