Aide de la requête en boucle!Bonjour à tous,
Je me bats avec une requête et j'ai besoin de votre aide!
J'essaie de transformer ceci:
| Parent | Composant |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 5 | 6 |
| 6 | 7 |
Dans ceci:
| Parent | Composant |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 1 | 6 |
| 1 | 7 |
Voici le code que j'ai jusqu'à présent, mais je ne peux pas le faire fonctionner.
Snums = Ouvrir la base de données (
"DSN =" Chaîne de connexion ... " ,
"SÉLECTIONNER [dbo]. [BOM]. [PARENT] en tant que PARENTID, [dbo]. [BOM]. [COMPOSANT] en tant que SUBPARENTID
DE [dbo]. [BOM] --as tb1
--LEFT JOIN [dbo]. [BOM] ON [dbo]. [BOM]. [PARENT] = [dbo]. [BOM]. [COMPOSANT] "
)
Snums << Nouvelle colonne ( "SUBPARENTID2" , Personnage );
Pour (i = 1 , je <= N lignes (Snums), i ++,
r = Snums << Obtenir des rangées où (: PARENTID ==: SUBPARENTID [i]);
Si (
N lignes (r) == 0 , Continuer (),
N lignes (r) == 1 & r [ 1 ] == i,: SUBPARENTID2 [i] = 0 ,
N lignes (r) == 1 ,: SUBPARENTID2 [i] =: SUBPARENTID [r [ 1 ]],
: SUBPARENTID2 [i] =: SUBPARENTID2 [i]
);
J'essaie d'apprendre le code JMP le plus rapidement possible (nouvel emploi), mais je suis sous un délai serré avec celui-ci. S'il vous plaît aider!
)
)
Re: Aide de requête en boucle! @ Minutemaid23 ,
Ici, cela fonctionne pour l'exemple que vous avez fourni. Je pense que cela fonctionne en grande partie et que la seule complication que je puisse voir est si la liste originale de parent et composant avait une relation plusieurs à plusieurs au lieu de un à un.
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" )
);
Re: Aide de requête en boucle!La meilleure description que je puisse fournir est ci-dessous. Puisque 5 est un composant inférieur à 1, et 6 est un composant de 5, alors 5 et 6 sont inférieurs à 1.
Cela tourne ceci:
| Parent | Composant |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 5 | 6 |
| 6 | 7 |
dans ceci:
| Parent | Composant |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 1 | 6 |
| 1 | 7 |
Re: Aide de requête en boucle! @ Minutemaid23 ,
D'après ce que j'ai compris, voici où je vais
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'idée par laquelle je vais est:
Étape 1: Pour que vous puissiez apporter ces éléments, vous devez d’abord identifier quels sont les éléments communs, c’est-à-dire quels éléments existent à la fois comme composant et parent.
Étape 2: Une fois que vous connaissez les éléments communs, je ne sais pas ce que vous entendez par les amener, si vous pouviez m'aider à comprendre un peu mieux - sinon, cela devrait au moins vous aider à démarrer dans la bonne direction.
Re: Aide de requête en boucle!Je ferai de mon mieux.
Je me connecte via ODBC à une table à deux colonnes, Parent et Component. Dans la table, il est possible qu'un composant figure également dans la colonne parente. Par exemple, le nombre 5 est un composant et un parent. J'essaye d'écrire du code qui regarde si un composant est dans la colonne parent. Si oui, je veux qu'il ramène la valeur de cette composante (6 dans cet exemple). Ensuite, j'essaie de vérifier si 6 est dans la table parente, et ainsi de suite.
| Parent | Composant |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 5 | 6 |
| 6 | 7 |
Re: Aide de requête en boucle! @ Minutemaid23 ,
Pouvez-vous m'aider à comprendre ce que vous essayez de faire? Je suis incapable de suivre les tableaux 1 et 2. Si la question était plus claire, cela aidera la communauté en général et vous-même si les gens peuvent essayer de vous aider.