L'istruzione Select/Where estrae dall'elencoCIAO!
Non so se il titolo descrive al meglio questo problema, ma ho la sensazione di essere sul punto di risolverlo.
Ho una tabella JMP con una colonna TestID e voglio selezionare righe da un'altra tabella dati in base all'elenco delle variabili TestID.
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 />Il mio problema risiede da qualche parte nella mia istruzione "where", ma non sono sicuro di come richiamare la stringa di ID in questa istruzione. L'opzione dell'istruzione IN non apre una nuova tabella, mentre l'opzione "like" apre una tabella vuota. Immagino che tratti ID_list come la variabile da cercare nell'altra tabella.
Ho trovato una domanda simile, ma anche per me l'istruzione IN non funziona: https://community.jmp.com/t5/Discussions/how-to-extract-data-with-criteria-of-JMP-table-values/td-p/9434
Ogni suggerimento è gradito!
Ricerca sui consumatori e sul mercatoPersonalizzazione di massaRi: Selezionare/Dove l'istruzione estrae dall'elencoID_list ti restituirà un elenco di stringhe (o numeri) e dovrai convertirlo in una stringa che la query SQL capirà e quindi aggiungere quella stringa alla tua query. Di seguito è riportato un esempio di creazione di query utilizzando Concat Items e 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"
);
Questa presentazione potrebbe dare alcune idee aggiuntive JMP e Oracle: consigli e suggerimenti per un matrimonio felice (2022-US-30MP-1093)
Ri: Selezionare/Dove l'istruzione estrae dall'elencoAh ok vedo le modifiche che devi fare. Ho usato questo modello, ma continuo a notare che viene visualizzata un'altra tabella di dati. cos'è questo simbolo, ¤ ?
Ri: Selezionare/Dove l'istruzione estrae dall'elencoIl carattere predefinito per eval insert è "^".Non sapevo che potessi fornirne un altro.Sembra che Jarmo stia usando ¤ per questo.
Per eseguire il debug:
- Usa print o show per visualizzare la tua istruzione SQL.
- Copialo/incollalo in un programma che può essere eseguito direttamente sul tuo database.Ad esempio per Oracle utilizziamo PL/SQL Developer, TOAD o SQL Developer
Una volta che hai funzionato, eseguilo da JMP.
Ecco un esempio di codice:
// 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);
Prova a eseguirlo e cerca i risultati nella finestra del registro.