Mysql选择1表,更新2表

时间:2013-11-30 10:52:41

标签: mysql sql insert-update

有三个表格:

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都没有用

0 个答案:

没有答案