none
请高手帮忙解决啊!本人感激不尽!!!!!! RRS feed

  • 问题

  • 我们是从网站抓取订单,每次要处理很多条,就是一次批处理多条销售订单,看销售订单是能匹配库存!
    库存主表(hgorder):
    id(订单id),order_status,flag,pipei
    库存明细表(ordersgoods)
    id(订单id),size_id(商品id),amount
    库存表(goodstock)
    id(商品id),stock_c,sale_count,saleb_c,total
    主要想实现,用订单明细表里的每条记录的amount 去匹配库存,如果 如果一张订单的每笔明细都amount<stock_c,则表示整张订单匹配,并要减去库存表的可用数量 stock_c-amount ,如果一张订单只要有一条明细库存不够,则整张订单部用匹配,不修改库存,
    现在实现的难点是:某种商品在完成一次匹配之后,可用库存数量就要修改,下一次这种商品的可用库存数量就是新的了,
    而且某种商品可能要多次修改库存,用update 库存表(goodstock) 的方法根本实现不了,因为要修改的次数比 update的条数要多!

    这是我用循环写的,速度比较慢,我希望不用循环可以实现这样的功能:
    SELECT  id INTO #t1 FROM hgorder where order_status=10
    DECLARE @ID int
    WHILE (exists(SELECT id FROM #t1))
    begin
       SELECT TOP 1 @ID=id FROM #t1
       If Exists (Select D.* From Ordersgoods D Left Join goodStock S On D.Size_ID=S.ID
                 Where D.Amount>IsNull(S.Stock_C,0) and D.ID=@ID)
       Update hgorder Set flag=0 Where ID=@ID --匹配失败
     Else
      Begin
        Update goodstock Set Stock_C= Stock_C-D.Amount
        From goodStock S Join ordersgoods D On S.ID=D.Size_ID
        Where D.ID=@ID
        Update hgorder Set flag=1 Where ID=@ID
      
       end
       DELETE FROM #t1 WHERE id=@ID
    end
    DROP Table #t1
    请高手帮我指点,本人感激不尽!!!!!!!!!!!
    QQ:634287660

    2010年8月16日 3:19

全部回复

  • 我们是从网站抓取订单,每次要处理很多条,就是一次批处理多条销售订单,看销售订单是能匹配库存!
    库存主表(hgorder):
    id(订单id),order_status,flag,pipei
    库存明细表(ordersgoods)
    id(订单id),size_id(商品id),amount
    库存表(goodstock)
    id(商品id),stock_c,sale_count,saleb_c,total
    主要想实现,用订单明细表里的每条记录的amount 去匹配库存,如果 如果一张订单的每笔明细都amount<stock_c,则表示整张订单匹配,并要减去库存表的可用数量 stock_c-amount ,如果一张订单只要有一条明细库存不够,则整张订单部用匹配,不修改库存,
    现在实现的难点是:某种商品在完成一次匹配之后,可用库存数量就要修改,下一次这种商品的可用库存数量就是新的了,
    而且某种商品可能要多次修改库存,用update 库存表(goodstock) 的方法根本实现不了,因为要修改的次数比 update的条数要多!

    这是我用循环写的,速度比较慢,我希望不用循环可以实现这样的功能:
    SELECT  id INTO #t1 FROM hgorder where order_status=10
    DECLARE @ID int
    WHILE (exists(SELECT id FROM #t1))
    begin
       SELECT TOP 1 @ID=id FROM #t1
       If Exists (Select D.* From Ordersgoods D Left Join goodStock S On D.Size_ID=S.ID
                 Where D.Amount>IsNull(S.Stock_C,0) and D.ID=@ID)
       Update hgorder Set flag=0 Where ID=@ID --匹配失败
     Else
      Begin
        Update goodstock Set Stock_C= Stock_C-D.Amount
        From goodStock S Join ordersgoods D On S.ID=D.Size_ID
        Where D.ID=@ID
        Update hgorder Set flag=1 Where ID=@ID
      
       end
       DELETE FROM #t1 WHERE id=@ID
    end
    DROP Table #t1
    请高手帮我指点,本人感激不尽!!!!!!!!!!!
    QQ:634287660

    2010年8月16日 3:15
  • 这边 Update hgorder Set flag=0 Where ID=@ID --匹配失败

    匹配失败是指没有匹配到相关记录?还是有错误信息?


    Microsoft Online Community Support Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2010年8月23日 5:51
    版主