Extraire des données à l'aide de chaînes SQL et JMP dans un script JSLSalut tout le monde.
J'accède à une certaine base de données en utilisant SQL à partir d'un script JSL.
Pour extraire les données que je souhaite, je dois fournir une spécification.
La spécification se présente sous la forme d'une liste ou d'une matrice en JMP/JSL.
Si je saisis manuellement les noms des éléments individuels, cela fonctionne. =>
/* Fetch Single Items from Database*/
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN ('A','B','C','D')");Mais, comme les éléments peuvent être des milliers, je dois trouver un moyen d'utiliser un seul nom représentant une liste (ou une matrice) des éléments.
Bien sûr, cela ne fonctionne pas. =>
/* 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^')");Quel est le le plus simple comment faire ça ?
Merci!
Accès aux donnéesRe : Extraire des données à l'aide d'une chaîne SQL et JMP dans un script JSLMerci!
Cela fonctionne également. Et c'est très utile !
Meilleur,
Valério
Re : Extraire des données à l'aide d'une chaîne SQL et JMP dans un script JSLJ'ai changé d'exemple pour utiliser Concaténer des éléments fonction qui fait le travail de convertir une liste en une chaîne séparée par des virgules. Votre code utilisé ^^ qui est la manière intelligente de faire une insertion, mais cela ne fonctionne qu'en conjonction avec le Insertion d'évaluation fonction.
Re : Extraire des données à l'aide d'une chaîne SQL et JMP dans un script JSLVoici comment je procède habituellement :
- construire une liste unique de valeurs de colonne
- alimenter cette liste dans un SQL
- récupérer les données de la base de données dans une nouvelle table
C'est jusqu'à présent que je connais la manière la plus simple d'effectuer cette tâche, et je l'utilise beaucoup,
J'ai implémenté cela dans mon menu, pour l'avoir à portée de main rapidement.
// 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;Re : Extraire des données à l'aide d'une chaîne SQL et JMP dans un script JSLMerci beaucoup!
C'est ce que je cherchais... Cela ne fonctionnerait pas le week-end car j'avais un accès instable à la base de données.
Merci encore.
Re : Extraire des données à l'aide d'une chaîne SQL et JMP dans un script JSLJe ne peux pas dire, qu'est-ce que c'est le plus simple , mais voici comment je procède :
// 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^)")
]\")));;