Select/Where-Anweisung zieht aus ListeHallo!
Ich bin nicht sicher, ob der Titel dieses Problem am besten beschreibt, aber ich habe das Gefühl, dass ich kurz davor bin, eine Lösung zu finden.
Ich habe eine JMP-Tabelle mit einer TestID-Spalte und möchte basierend auf der Liste der Variablen TestID Zeilen aus einer anderen Datentabelle auswählen.
dt = Open("Lot List2.jmp");
ID_list = Column( dt, "TestID" ) << Get values;
dt1= Open Database("Connection",
"SELECT
[TestID]
,[Device]
,[FailureMode]
FROM [Database]
where TestID IN 'ID_list'
order by [TestID] Desc","Device Summary");<BR /><BR />/* ALSO TRIED*/<BR /><BR /><BR />dt = Open("Lot List2.jmp");
ID_list = Column( dt, "TestID" ) << Get values;
dt1= Open Database("Connection",
"SELECT
[TestID]
,[Device]
,[FailureMode]
FROM [Database] m
where m.TestID like 'ID_list'
order by [TestID] Desc","Device Summary");<BR />Mein Problem liegt irgendwo in meiner „Where“-Anweisung, aber ich bin mir nicht sicher, wie ich die ID-Zeichenfolge in diese Anweisung einbinden soll. Die Option „IN“ öffnet keine neue Tabelle, die Option „Like“ hingegen eine leere Tabelle. Ich vermute, dass ID_list als die Variable behandelt wird, nach der in der anderen Tabelle gesucht werden soll.
Ich habe eine ähnliche Frage gefunden, aber die IN-Anweisung funktioniert bei mir auch nicht: https://community.jmp.com/t5/Discussions/how-to-extract-data-with-criteria-of-JMP-table-values/td-p/9434
Alle Erkenntnisse sind willkommen!
Konsumenten- und MarktforschungMassenanpassungBetreff: Select/Where-Anweisung zieht aus der ListeID_list gibt Ihnen eine Liste von Zeichenfolgen (oder Zahlen) zurück und Sie müssen sie in eine Zeichenfolge konvertieren, die die SQL-Abfrage versteht, und diese Zeichenfolge dann zu Ihrer Abfrage hinzufügen. Unten sehen Sie ein Beispiel für die Abfrageerstellung mit Concat Items und Eval Insert
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
ID_list = Column(dt, "name") << Get values; // list of strings?
sql_template = "SELECT [TestID], [Device], [FailureMode]
FROM [Database]
where TestID IN ('¤idlist_sql¤')
order by [TestID] Desc";
idlist_sql = Concat Items(ID_list, "','");
sql_str = Eval Insert(sql_template, "¤");
dt1 = Open Database("Connection",
sql_str
"Device Summary"
);
Diese Präsentation könnte einige zusätzliche Ideen geben JMP und Oracle: Tipps und Tricks für eine glückliche Ehe (2022-US-30MP-1093)
Betreff: Select/Where-Anweisung zieht aus der ListeOh okay, ich sehe die Änderungen, die Sie vornehmen müssen. Ich habe diese Vorlage verwendet, aber ich bemerke immer noch, dass eine andere Datentabelle angezeigt wird. Was ist dieses Symbol, ¤ ?
Betreff: Select/Where-Anweisung zieht aus der ListeDas Standardzeichen für das Einfügen von Auswertungen ist "^".Ich wusste nicht, dass Sie noch einen liefern können.Sieht so aus, als würde Jarmo konsumieren ¤ dafür.
Zum Debuggen:
- Verwenden Sie print oder show, um Ihre SQL-Anweisung anzuzeigen.
- Kopieren Sie es und fügen Sie es in ein Programm ein, das direkt auf Ihrer Datenbank ausgeführt werden kann.Für Oracle verwenden wir zum Beispiel PL/SQL Developer, TOAD oder SQL Developer
Sobald das funktioniert, führen Sie es von JMP aus aus.
Hier ist ein Beispielcode:
// List of numeric IDs
id_list = {111, 222, 333, 444, 555};
// Convert numbers to text
for (i = 1, i <= nitems(id_list), i++,
id_list[i] = char(id_list[i]);
);
in_list = "('" || concat items(id_list, "', '") || "')";
show(in_list);
sql_statement = evalinsert(
"SELECT * from mytable m
WHERE m.id IN
^in_list^"
);
show(sql_statement);
Versuchen Sie, dies auszuführen, und suchen Sie nach den Ergebnissen im Protokollfenster.