Pytanie : TSQL gniazdować PODCZAS GDY ISTNIEĆ

Cześć ekspert,
My PODCZAS GDY ISTNIEĆ pętla nigdy exit.
Can ty pomagać z istnieć?

@Parent_ID

DECLARE @Child_ID int

WHILE ISTNIEĆ (WYBRANY InventorytID, ParentID OD Stół DOKĄD ParentID = @Parent_ID)
BEGIN
WYBRANY @Child_ID = InventorytID OD Stół DOKĄD ParentID = @Parent_ID
         --wracać the zawartość the pierwszy podczas gdy loop

         --zaczynać drugi loop
PODCZAS GDY ISTNIEĆ (WYBRANY InventorytID, ParentID OD Stół DOKĄD ParentID = @Child_ID)
BEGIN
         --wracać the zawartość the sekunda podczas gdy loop
END
END

Odpowiedź : TSQL gniazdować PODCZAS GDY ISTNIEĆ

Jeżeli ty chcieć travers stół - jak Bill Materiał stół, then ty móc rachunek CTE typ zapytanie przy @parent i wtedy the zupełny rachunek.

Ten dźwięk trochę lubić dźwięk ty próbować?

Przez przykład, using zastępca stół zamiast (właśnie dla the przykład - ty używać twój real stół imię)


tworzyć stołowy #table (parentid int, inventoryID int, inventory_name varchar (100))
wkładać #table wartość (1,0, "Parent1")
wkładać #table wartość (1,2, "Parent1Child2")
wkładać #table wartość (2,3, "Parent2Child3")
wkładać #table wartość (3,0, "Parent3")

-- teraz my mieć niektóre sampel dane, the CTE niektóre zapytanie

; z BOM_CTE
(WYBRANY InventoryID, ParentID, inventory_name
 OD #Table
 DOKĄD ParentID = (1)

 zjednoczenie wszystko

 WYBRANY T.InventoryID, T.ParentID, T.inventory_name
 OD #TABLE T
 WEWNĘTRZNY ŁĄCZYĆ BOM_CTE C na T.ParentID = C.InventoryID
 )
wybierać parentid, inventoryid jako child_id, inventory_name od BOM_CTE
Inne rozwiązania  
 
programming4us programming4us