Questione : TSQL annidato MENTRE ESISTE

Ciao gli esperti, il
My MENTRE NON ESISTE mai il ciclo exit.
Can voi lo aiutano con questo? il int

WHILE del @Child_ID del

@Parent_ID

DECLARE ESISTE (InventorytID PRESCELTO, ParentID dalla Tabella DOVE ParentID = @Parent_ID)
BEGIN
SELEZIONA il @Child_ID = InventorytID A PARTIRE dalla Tabella IN CUI ParentID = @Parent_ID
         --restituire il contenuto del primo mentre loop

         --iniziare il secondo loop
MENTRE ESISTE (InventorytID PRESCELTO, ParentID dalla Tabella DOVE ParentID = @Child_ID) il
BEGIN
         --restituire il contenuto del secondo mentre loop
END
END
class= del

Risposta : TSQL annidato MENTRE ESISTE

Se volete ai travers una tabella - come un Bill della tabella di materiali, quindi di voi può usare un tipo ricorsivo domanda di CTE cominciare a @parent ed allora restituire la fattura completa.

Quel suono un po'gradice che cosa state provando a fare?

Ad esempio, using una tabella del temp preferibilmente (appena per l'esempio - usate il vostro nome reale della tabella)


generare la tabella #table (parentid int, inventoryID int, inventory_name varchar (100))
inserire i valori #table (1.0, “Parent1„)
inserire i valori #table (1.2, “Parent1Child2„)
inserire i valori #table (2.3, “Parent2Child3„)
inserire i valori #table (3.0, “Parent3„)

-- ora abbiamo alcuni dati del sampel, la domanda ricorsiva di CTE

; con BOM_CTE As
(InventoryID PRESCELTO, ParentID, inventory_name
 Da #Table
 DOVE ParentID = 1

 unione tutta

 SELEZIONARE T.InventoryID, T.ParentID, T.inventory_name
 DA T #Table
 INTERNO UNIRE BOM_CTE C su T.ParentID = C.InventoryID
 )
selezionare il parentid, inventoryid come child_id, inventory_name da BOM_CTE
Altre soluzioni  
 
programming4us programming4us