Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   MySQL y ADO (https://www.clubdelphi.com/foros/showthread.php?t=11854)

SaurioNet 28-06-2004 12:34:14

MySQL y ADO
 
Hola a todos:

No tengo mucha experiencia en MySql y necesito saber si la cláusula "... IN ..." funciona exactamente igual en MySql que en Sql Server, es decir ¿admite una subconsulta?.

La otra duda que tengo es que no consigo ejecutar una instrucción que incluya la creación de una tabla temporal, cargarla con determinados datos; ejecutar una consulta que contempla datos de la tabla temporal, para obtener un RecordSet y por último destruir la tabla temporal. En código sería algo así.

CREATE TEMPORARY TABLE tmp .....;
INSERT INTO tmp ....;
SELECT .... FROM ... WHERE ...;
DROP TABLE tmp;

He ejecutado esta instrucción en el administrador de MySql y ha funcionado correctamente, pero desde mi código he probado la misma consulta y no consigo ejecutarla correctamente. ¿Puede ser que ADO no soporte este funcionamiento?. Lo que pretendo es que los valores resueltos por el SELECT, se almacenen en un RecordSet.

Gracias por vuestra colaboración.

SaurioNet 28-06-2004 13:45:34

La única solución que he encontrado consiste en aplicar cada instrucción por separado y de ese modo funciona. Si a alguien se le ocurre otro modo y le apetece exponerlo ánimo.

roman 28-06-2004 17:34:52

Cita:

Empezado por SaurioNet
No tengo mucha experiencia en MySql y necesito saber si la cláusula "... IN ..." funciona exactamente igual en MySql que en Sql Server, es decir ¿admite una subconsulta?.

MySql soporta subconsultas desde la versión 4.1 y, según la documentación, soporta todas las formas de subconsulta que establece el estándar.


Cita:

Empezado por SaurioNet
La otra duda que tengo es que no consigo ejecutar una instrucción que incluya la creación de una tabla temporal, cargarla con determinados datos; ejecutar una consulta que contempla datos de la tabla temporal, para obtener un RecordSet y por último destruir la tabla temporal. En código sería algo así.

CREATE TEMPORARY TABLE tmp .....;
INSERT INTO tmp ....;
SELECT .... FROM ... WHERE ...;
DROP TABLE tmp;

Quizá no necesites una tabla temporal. Consulta en la documentación de MySql la sintaxis para CREATE TABLE que admite la forma:

Código SQL [-]
create table tabla select campos from otra tabla

(La parte de crear una tabla a partir de otra viene casi al final de la página que te indico)


Cita:

Empezado por SaurioNet
He ejecutado esta instrucción en el administrador de MySql y ha funcionado correctamente, pero desde mi código he probado la misma consulta y no consigo ejecutarla correctamente. ¿Puede ser que ADO no soporte este funcionamiento?. Lo que pretendo es que los valores resueltos por el SELECT, se almacenen en un RecordSet.

Bueno, si en el administrado de MySql puedes hacer algo que no se puede con ADO, claramente la limitación es de ADO.

Yo te sugiero probar de usar Zeos en lugar de ADO.

Otra cosa: de preferencia abre varios hilos para consultas distintas.

// Saludos

SaurioNet 16-07-2004 09:35:33

Hola Roman:

gracias por tu ayuda.
En cuanto a lo que me comentas sobre la utilización de hilos, ¿podrías indicarme cómo se abren esos hilos o dónde puedo ampliar la informacion?

Saludos.

roman 16-07-2004 09:39:27

Me refería a abrir distintos hilos en los foros cuando preguntes varias cosas.

// Saludos


La franja horaria es GMT +2. Ahora son las 20:45:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi