Abfragehilfe helfen!Hallo alle,
Ich habe Probleme mit einer Anfrage und brauche Ihre Hilfe!
Ich versuche das zu drehen:
| Elternteil | Komponente |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 5 | 6 |
| 6 | 7 |
Das sehr gut finden:
| Elternteil | Komponente |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 1 | 6 |
| 1 | 7 |
Hier ist der Code, den ich bis jetzt habe, aber ich kann ihn nicht zur Arbeit bringen.
Snums = Datenbank öffnen (
"DSN =" Verbindungszeichenfolge ... " .
SELECT [dbo]. [BOM]. [PARENT] als PARENTID, [dbo]. [BOM]. [COMPONENT] als SUBPARENTID
FROM [dbo]. [BOM] - wie tb1
--LEFT JOIN [dbo]. [BOM] ON [dbo]. [BOM]. [PARENT] = [dbo]. [BOM]. [COMPONENT] "
);
Snums << Neue Spalte ( "SUBPARENTID2" , Zeichen);
Zum (i = 1 , ich <= N Reihen (Snums), i ++,
r = Snums << Holen Sie sich Zeilen wo (: PARENTID ==: SUBPARENTID [i]);
Ob (
N Reihen (r) == 0 . Fortsetzen (),
N Reihen (r) == 1 & r [ 1 ] == i,: SUBPARENTID2 [i] = 0 .
N Reihen (r) == 1 ,: SUBPARENTID2 [i] =: SUBPARENTID [r [ 1 ]],
: SUBPARENTID2 [i] =: SUBPARENTID2 [i]
););
Ich versuche, JMP-Code so schnell wie möglich zu lernen (neuer Job), habe aber mit diesem einen knappen Termin. Bitte helfen
);
);
Re: Looping Abfragehilfe! @ Minutemaid23 .
Hier funktioniert das für das von Ihnen angegebene Beispiel. Ich denke, dass dies weitgehend funktioniert und die einzige Komplikation, die ich sehen kann, ist, wenn die ursprüngliche Liste der Eltern und Komponenten eine viele zu viele Beziehung hatte und nicht zu eins zu eins.
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: Looping Abfragehilfe!Die beste Beschreibung, die ich geben kann, ist unten. Da 5 eine Komponente unter 1 ist und 6 eine Komponente von 5 ist, stehen 5 und 6 unter 1.
Es dreht sich das:
| Elternteil | Komponente |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 5 | 6 |
| 6 | 7 |
das sehr gut finden:
| Elternteil | Komponente |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 1 | 6 |
| 1 | 7 |
Re: Looping Abfragehilfe! @ Minutemaid23 .
Von dem, was ich verstanden habe, gehe ich hier hin
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;
Die Idee, auf die ich gehe, ist:
Schritt 1: Damit Sie diese Elemente übernehmen können, müssen Sie zunächst die gemeinsamen Elemente ermitteln, dh, welche Elemente sowohl als Komponente als auch als übergeordnetes Element vorhanden sind
Schritt 2: Sobald Sie die Gemeinsamkeiten kennen, weiß ich nicht, was Sie meinen, wenn Sie sie herüberbringen, wenn Sie mir helfen könnten, dies ein bisschen besser zu verstehen - sonst sollte dies zumindest den richtigen Weg bringen
Re: Looping Abfragehilfe!Ich werde mein Bestes geben.
Ich verbinde mich über ODBC mit einer Tabelle, die zwei Spalten, Parent und Component, enthält. In der Tabelle kann sich eine Komponente auch in der übergeordneten Spalte befinden. Zum Beispiel ist die Zahl 5 eine Komponente und ein Elternteil. Ich versuche, Code zu schreiben, der aussieht, ob sich eine Komponente in der übergeordneten Spalte befindet. Wenn ja, möchte ich, dass der Wert dieser Komponente (in diesem Beispiel 6) zurückgegeben wird. Dann versuche ich es zu überprüfen, ob 6 in der übergeordneten Tabelle ist und so weiter.
| Elternteil | Komponente |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 5 | 6 |
| 6 | 7 |
Re: Looping Abfragehilfe! @ Minutemaid23 .
Kannst du mir helfen zu verstehen, was du versuchst? Ich kann nicht folgen, was Tabelle 1 und Tabelle 2 sind. Es hilft der Community im Allgemeinen und sich selbst, wenn die Frage klarer war - damit die Leute versuchen können, Ihnen zu helfen.