Estrarre i dati utilizzando la stringa SQL e JMP nello script JSLCiao a tutti.
Sto accedendo a un determinato database utilizzando SQL da uno script JSL.
Per estrarre i dati che desidero, devo fornire una specifica.
La specifica si presenta sotto forma di elenco o matrice in JMP/JSL.
Se digito manualmente i nomi dei singoli elementi, funziona. =>
/* Fetch Single Items from Database*/
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN ('A','B','C','D')");Ma, poiché gli elementi potrebbero essere migliaia, devo trovare un modo per utilizzare un singolo nome che rappresenti un elenco (o una matrice) di elementi.
Naturalmente così non funziona. =>
/* Fetch Data from Data Table*/
Items_M = :Items << get as matrix();
/* Fetch Data from Database*/
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN ('^Items_M^')");Quale è più semplice modo per farlo?
Grazie!
Accesso ai datiRi: Estrarre i dati utilizzando la stringa SQL e JMP nello script JSLGrazie!
Funziona anche questo. Ed è molto utile!
Migliore,
Valerio
Ri: Estrarre i dati utilizzando la stringa SQL e JMP nello script JSLHo cambiato con l'esempio da usare Elementi concatenati funzione che svolge il compito di convertire un elenco in una stringa separata da virgole. Il tuo codice ha utilizzato ^^ che è il modo intelligente di eseguire un inserimento, ma funziona solo insieme a Inserisci valutazione funzione.
Ri: Estrarre i dati utilizzando la stringa SQL e JMP nello script JSLEcco come lo faccio di solito:
- creando un elenco univoco di valori di colonna
- inserendo quell'elenco in un file sql
- recuperare i dati dal database in una nuova tabella
Finora conosco il modo più semplice per eseguire questo compito e lo uso molto,
L'ho implementato nel mio menu, per averlo a portata di mano velocemente.
// take unique values from the column :items
dt = open("$SAMPLE_DATA\Big Class.jmp");
summarize( Current Data Table(), item_lst = by( :NAME /* :item */ ) );
// show list
show(item_lst);
// prepare list for sql
item_lst_str=substitute (char(item_lst),"{","(","}",")","\!"","'");
// open SQL Query with inserted item_lst
New SQL Query(
Connection(
"ODBC:DSN=DSN_NAME;UID=user;DBQ=database;" // connection string to be modified
),
QueryName( "ITEMS_Query" ),
CustomSQL( eval insert("SELECT * from database_table dt where dt.item in ^item_lst_str^;") )
) << modify;
// or directly run if neccessary
// ) << Run;Ri: Estrarre i dati utilizzando la stringa SQL e JMP nello script JSLGrazie mille!
E' quello che cercavo... Non funzionerebbe durante il fine settimana perché avevo un accesso instabile al database.
Grazie ancora.
Ri: Estrarre i dati utilizzando la stringa SQL e JMP nello script JSLNon posso dire cosa sia più semplice , ma ecco come lo faccio:
// for test purposes
lstItems = {"A","B","C","D"};
// build a comma separated list
strItems = ConcatItems(lstItems,",");
/* Fetch Data from Database*/
eval(parse(evalinsert("\[
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN (^strItems^)")
]\")));;