La instrucción Select/While extrae de la lista¡Hola!
No estoy seguro de si el título describe mejor este problema, pero siento que estoy a punto de resolverlo.
Tengo una tabla JMP con una columna TestID y quiero seleccionar filas de otra tabla de datos en función de la lista de variables 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 />Mi problema radica en la instrucción "where", pero no estoy seguro de cómo llamar a la cadena de IDs en esta instrucción. La opción "IN" no abre una tabla nueva, y la opción "like" abre una tabla en blanco. Supongo que trata "ID_list" como la variable a buscar en la otra tabla.
Encontré una pregunta similar, pero la declaración IN tampoco me funciona: https://community.jmp.com/t5/Discussions/how-to-extract-data-with-criteria-of-JMP-table-values/td-p/9434
¡Cualquier idea será bienvenida!
Investigación de mercados y consumidoresPersonalización masivaRe: Seleccionar/Dónde la instrucción se extrae de la listaID_list le devolverá una lista de cadenas (o números) y tendrá que convertirla en una cadena que la consulta SQL entenderá y luego agregará esa cadena a su consulta. A continuación se muestra un ejemplo de creación de consultas utilizando Concat Items y 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"
);
Esta presentación puede dar algunas ideas adicionales JMP y Oracle: Consejos y trucos para un matrimonio feliz (2022-US-30MP-1093)
Re: Seleccionar/Dónde la instrucción se extrae de la listaAh vale ya veo las modificaciones que tienes que hacer. He usado esta plantilla, pero todavía noto que aparece otra tabla de datos. ¿Qué es este símbolo, ¤ ?
Re: Seleccionar/Dónde la instrucción se extrae de la listaEl carácter predeterminado para la inserción de evaluación es "^".No sabía que podías proporcionar otro.Parece que Jarmo está usando ¤ por eso.
Depurar:
- Use imprimir o mostrar para mostrar su declaración SQL.
- Cópielo/péguelo en un programa que pueda ejecutarse directamente en su base de datos.Por ejemplo, para Oracle usamos PL/SQL Developer, TOAD o SQL Developer
Una vez que tenga eso funcionando, ejecútelo desde JMP.
Aquí hay un código de muestra:
// 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);
Intente ejecutar esto y busque los resultados en la ventana de registro.