• Viernes 8 de Noviembre de 2024, 13:56

Autor Tema:  Como hago una query dinamica ????  (Leído 6308 veces)

jorgedf

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Como hago una query dinamica ????
« en: Viernes 23 de Octubre de 2009, 15:02 »
0
Estimados,
Tengo una duda que me tiene vuelto loco, les explico, tengo una tabla "tabla1" con muchos datos ejemplo de tabla1
campo1   campo2
nkjnknj   20091001
mkmk   20091002
huhuh    20091003
el problema es que por cada campo1 de a tabla1 existe una tabla2 con ese nombre, tablas con nombres aleatorios es decir no tengo un patron para el nombre de las tablas, y por cada una de esas tablas necesito hacer un count(*) es decir un

select count(*) from nkjnknj

mi consulta es :existe alguna forma de recorrer la tabla 1, y pasando como referencia los nombres para que me vaya haciendo el count(*) por cada tabla2????
si me puedes ayudar te lo agradeceria muchisimo..
*******************************

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

jorgedf

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Como hago una query dinamica ????
« Respuesta #2 en: Viernes 23 de Octubre de 2009, 16:14 »
0
Cita de: "Thanatos-chan"
saludos jorgedf,

lo que buscas se llama asi mismo "Dynamic SQL" y al parecer en mysql no la vas a tener tan facil.........

si lo se, el problema es que donde trabajo, siempre hemos trabajado con SQL y ORACLE los cuales son motores muy potentes, pero ahora llego un nuevo gerente y para ahorrar costos quiere migrar todas las bases a Mysql  :argh:

eso implica migrar DTS y una serie de cosas

mira yo habia hecho esto en MYsql

CREATE DEFINER= PROCEDURE `cuadrado2`(IN numero INTEGER, OUT resultado INTEGER)
SELECT numero*numero INTO resultado $$

y cuanod lo llamo call cuadrado2(5) me entrega el numero 25, es decir funciona

pero cuando hago
CREATE DEFINER= PROCEDURE `valida`(IN nomb VarChar(10))
select count(*) from nomb $$
y cuanod lo llamo call valida("mitabla") me entrega el error que no existe la tabla nomb, es decir por algun motivo no toma el nombre de la variable para el select  :hitcomp:

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: Como hago una query dinamica ????
« Respuesta #3 en: Viernes 23 de Octubre de 2009, 16:32 »
0
:P

si fuera oracle. fuera super facil es como dicen oracle hace de todo excepto parquearte el caro.  :P

pues yo creo que no puedes pasar tan alegremente una variable a un FROM.

mira este ejemplo puesto en la documentacion

USE test;
CREATE TABLE t1 (a INT NOT NULL);
INSERT INTO t1 VALUES (4), (8), (11), (32), (80);

SET @table = 't1';
SET @s = CONCAT('SELECT * FROM ', @table);

PREPARE stmt3 FROM @s;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;

si notas primero se prepara el string del select y luego se manda a ejecutar. en la misma documentacion dice que no puedes usar cursores porque no estan soportados para este tipo de operacion. punto para oracle. ;)

asi que tendrias que hacer 2 procedures uno con un cursor que tenga el select de la primera tabla y se lo pase como parametro al segundo procedure. y si lo que quieres es tener la data para despues analizarla puedes crear una tabla para insertar: nombre_tabla, count_tabla.

suerte!... sino has huelga y di que oracle es lo maximo!  :D
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.