Aiuto di query looping!Ciao a tutti,
Sto lottando con una query e ho bisogno del tuo aiuto!
Sto cercando di trasformare questo:
| Genitore | Componente |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 5 | 6 |
| 6 | 7 |
In questo:
| Genitore | Componente |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 1 | 6 |
| 1 | 7 |
Ecco il codice che ho finora, ma non riesco a farlo funzionare.
Snums = Apri database (
"DSN =" stringa di connessione ... " ,
"SELECT [dbo]. [BOM]. [PARENT] come PARENTID, [dbo]. [BOM]. [COMPONENT] come SUBPARENTID
DA [dbo]. [BOM] --come tb1
--LEFT JOIN [dbo]. [BOM] ON [dbo]. [BOM]. [PARENT] = [dbo]. [BOM]. [COMPONENT] "
);
Snums << Nuova colonna ( "SUBPARENTID2" , Personaggio );
Per (i = 1 , io <= N righe (Snums), i ++,
r = Snums << Ottieni righe dove (: PARENTID ==: SUBPARENTID [i]);
Se (
N righe (r) == 0 , Continua (),
N righe (r) == 1 & r [ 1 ] == i,: SUBPARENTID2 [i] = 0 ,
N righe (r) == 1 ,: SUBPARENTID2 [i] =: SUBPARENTID [r [ 1 ]],
: SUBPARENTID2 [i] =: SUBPARENTID2 [i]
););
Sto cercando di imparare il codice JMP il più velocemente possibile (nuovo lavoro) ma ho una scadenza molto stretta con questo. Per favore aiuto!
);
);
Ri: Aiuto di query looping! @ Minutemaid23 ,
Qui funziona per l'esempio che hai fornito. Penso che funzioni in gran parte e l'unica complicazione che riesco a vedere è se l'elenco originale di genitore e componente avesse una relazione molti-molti anziché uno a uno.
Clear Log(); Clear Globals();
// Get Reference for data table
dt = Current Data Table();
// Extract Values from Parent and Component and wrap them in associative arrays
ParentVals = Associative Array(dt:Parent << Get Values) ;
ComponentVals = Associative Array(dt:Component << Get Values);
// Find Common elements between Parents and Components
Intersection = ParentVals;
Intersection << Intersect(ComponentVals);
Common = Intersection << Get Keys;
// Update Data Table
dt << Begin Data Update;
for(i = 1, i <= N Items(Common), i++,
SR1 = dt << Select Where(:Parent == Common[i]) << Get Selected Rows;
dt << Clear Select;
SR2 = dt << Select Where(:Component == Common[i]) << Get Selected Rows;
NewParent = dt:Parent[SR2];
dt << Clear Select;
dt << Add Rows(1);
nR = nRows(dt);
dt:Parent[nR] = NewParent;
dt:Component[nR] = Common[i];
);
dt << End Data Update;
// Remove Duplicates
dt_res = dt << Summary(
Group( :Parent, :Component ),
Freq( "None" ),
Weight( "None" )
);
Ri: Aiuto di query looping!Di seguito la migliore descrizione che posso fornire. Poiché 5 è un componente sotto 1 e 6 è un componente di 5, quindi 5 e 6 sono sotto 1.
Trasforma questo:
| Genitore | Componente |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 5 | 6 |
| 6 | 7 |
in questo:
| Genitore | Componente |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 1 | 6 |
| 1 | 7 |
Ri: Aiuto di query looping! @ Minutemaid23 ,
Da quello che ho capito, ecco dove sto andando
Clear Log(); Clear Globals();
// Get Reference for data table
dt = Current Data Table();
// Extract Values from Parent and Component and wrap them in associative arrays
ParentVals = Associative Array(dt:Parent << Get Values) ;
ComponentVals = Associative Array(dt:Component << Get Values);
// Find Common elements between Parents and Components
Intersection = ParentVals;
Intersection << Intersect(ComponentVals);
Common = Intersection << Get Keys;
L'idea che sto passando è:
Passaggio 1: per portare questi elementi sopra, dovrai prima identificare quali sono gli elementi comuni, ovvero quali elementi esistono sia come componente che come genitore
Passo 2: Una volta che conosci gli elementi comuni, non so cosa intendi portandoli sopra, se puoi aiutarmi a capirlo un po 'meglio - altrimenti questo dovrebbe almeno iniziare nella giusta direzione
Ri: Aiuto di query looping!Farò del mio meglio.
Mi sto collegando tramite ODBC a una tabella che ha due colonne, padre e componente. Nella tabella, è possibile che un componente si trovi anche nella colonna genitore. Ad esempio, il numero 5 è un componente e un genitore. Sto cercando di scrivere il codice che appare se un componente si trova nella colonna padre. Se è così, voglio riportare il valore di quel componente (6 in questo esempio). Quindi sto cercando di verificare se 6 è nella tabella padre e così via.
| Genitore | Componente |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 5 | 6 |
| 6 | 7 |
Ri: Aiuto di query looping! @ Minutemaid23 ,
Puoi aiutarmi a capire cosa stai cercando di fare? Non riesco a seguire la tabella 1 e la tabella 2. Aiuterà la comunità in generale e te stesso se la domanda è più chiara, quindi le persone possono cercare di aiutarti.