有沒函數在sql server中怎麼在BOM取得一個產品所有層次的物料
BOM是那種無限延展的BOM結構

解决方案 »

  1.   

    这和是否是SQL Server无关吧?!你在Oracle中怎么取?不敢肯定,我的印象一般都是循环递归实现的。
      

  2.   

    select level,rowid,...
      from ...
      where ...
      start with ...
      connect by expression;
    在oracle 中可以這麼寫將BOM層次的資料全部取出來,在sql server聽說也是有函數可以處理
    隻是不知道怎麼處理
      

  3.   

    如果你在Oracle中这么可以满足需求,那说明你的BOM算法和需求并不复杂。如果你的表设计中只有BOM子件和母件,而没有表示两者关联关系的字段(即树的路径),在SQL Server中你只能通过循环递归来实现你的需求!SQL Server没有类似Oracle的start...connect功能。
      

  4.   

    參考
    http://community.csdn.net/Expert/topic/5292/5292899.xml?temp=.2070886
      

  5.   

    我的需求比較簡單,就是將一個產品包含的所有半成品和物料全部找出來
    bom結構如下:
    table: part
    物料:partnum ,下屬物料mtlpartnum
    資料結構即:
    PARTNUM     MTLPARTNUM
    A              B
    B              C
    C              D
      

  6.   

    如果没有性能要求那就用递归吧。如果物料庞大的话,递归基本会成为系统瓶颈。个人不喜欢递归。如果性能要求比较严格,最好修改表结构:PARTNUM     MTLPARTNUM    BOMPath
    A              B           \A\B
    B              C           \A\B\C 
    C              D           \A\B\C\DBOMPath在记录插入表中时加入。这样查找A的所有子件的时候就可以:
    select *
    from table
    where BOMPath like '%\A\%'