簡體   English   中英

產品層次結構

[英]Hierarchical product structure

我正在處理一個在pic basic(yippee)中的報告,並將其轉換為.NET。 該報告最后顯示在下面。 該表(僅顯示一部分數據以使其簡單)在其中具有ParentID(ID)和ChildID,並且基本上會進行連接,直到沒有可用的ChildID(NULL)。 我寫了一個我認為可以正常運行的過程,但是它坐着不返回任何類型的結果。 SQL不是我的強項。

報告

0.........  SA33028
 1........  42S0131
 1........  5S0127
 1........  6S0175
 1........  SA33023
  2.......  16S0142
  2.......  18S0103
  2.......  24S0108
  2.......  28SM0105
  2.......  S30461.AI
  2.......  S30463
   3......  S28807
   3......  S28807
  2.......  S30641
  2.......  S31134
  2.......  S9383
  2.......  SA29801
   3......  16S0116
   3......  S27798
   3......  S31170
   3......  SA30059
    4.....  38S0116
    4.....  7S0105
    4.....  S19430.145
     5....  7SM0145
      6...  7SM0145.001
      6...  7SM0145.002
     5....  S19430
    4.....  S19431
  2.......  SA30910

表:

ParentID      ChildID
SA33028   42S0131
SA33028   5S0127
SA33028   6S0175
SA33028   79S0101
SA33028   S11870
SA33028   S30151
SA33028   SA33023
SA33028   SA33029
SA33023   S30463
S30463    S28807

SQL過程:

ALTER PROCEDURE [dbo].[getHierarchy]
@Parent VARCHAR(20)

AS
BEGIN

SET NOCOUNT ON;

WITH AllParts([PSNbr], [ChildID], [ParentID])
AS 
(
 SELECT Child.Parent_Part AS PSNbr, 
 Child.Parent_Part AS ChildID, 
 Parent.Parent_Part AS ParentID
 FROM ps AS Child
 LEFT OUTER JOIN ps AS Parent
 ON Child.Component_Part = Parent.Parent_Part

 UNION ALL

 SELECT AllParts.PSNbr AS PSNbr,
    AllParts.ParentID AS ChildID, 
    NewParent.Component_Part AS ParentID
 FROM AllParts
 INNER JOIN PS AS NewParent
 ON AllParts.ParentID = NewParent.Parent_Part
    AND AllParts.ParentID <> AllParts.ChildID
 INNER JOIN PS as NewParentInfo
 ON NewParent.Component_Part = NewParentInfo.Parent_Part

)
SELECT AllParts.[PSNbr],
       AllParts.[ParentID]
FROM AllParts
WHERE PSNbr = @Parent;

為了紀念KISS原則,我請問。 您如何測試程序? 您是直接按F5還是在SQL中運行它? 嘗試突出顯示從“ BEGIN”到“ END”的所有內容,然后按F5。 (順便說一句,上面的示例中沒有“ END”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM