Ir al contenido



Foto

Se pueden anidar consultas con FireDAC (fdQuery)

fdQuery

Mejor respuesta JoAnCa , 09 junio 2019 - 07:00

Pues resolvi el problema mediante un procedimiento almacenado en la BD MySQL

Le paso los años a comparar como parámetros y también me permite anidar las consultas de la forma




sql
  1. SELECT vista3.campos
  2. FROM
  3. (SELECT vista2.campos
  4. FROM
  5. (SELECT unatabla.campos
  6. FROM unatabla
  7. ) vista2
  8. ) vista3;


despues lo de los meses seleccionados lo gestionaré por codigo delphi. Ir al mensaje completo


  • Por favor identifícate para responder
2 respuestas en este tema

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 730 mensajes
  • LocationPinar del Río, Cuba

Escrito 07 junio 2019 - 11:21

Hola a todos
Tengo una situacion que no se como resolver con FireDAC

El problema es el siguiente:
Tengo una tabla que obtuve de otra BD, en la que tengo la información primaria que necesito para mi programa.
De esa información tengo que hacer una tabla con los importes por meses de cada trabajador, para comparar 2 años, el importe de cada mes, es como una tabla de referencias cruzadas.
En la tabla original, los meses y años son filas, pero necesito convertirlos a columnas.

En MySQL lo hago haciendo 3 vistas, una hace uso de la otra hasta llegar al resultado final.

Para que se me entienda mejor, esto es lo que hago: vista1, vista2 vista3

vista1: Select * From unatabla; <- Obtener los datos necesarios del origen filtrando los meses y años a comparar

vista2: Select (campos ncesarios) From vista1; <- Convertir las filas (meses) en columnas

vista3: Select (campos ncesarios) From vista2; <- Agrupar y totalizar los datos


Pero el problema está en que los años a comparar, asi como los meses, son variables (los selecciona el usuario)
No se como pasaria esos parámetros a MySQL, y tampoco se me ocurre como hacer eso usando varias Query de FireDAC

Pues puedo crear la sentencia SQL con los parámetros seleccinados por el usuario para la primera Query, pero la segunda usa el resultado de la primera, como las enlazo? y la tercera con la segunda?

O quizas uds tengan otra idea mejor de como hacerlo

Editado por JoAnCa, 07 junio 2019 - 11:22 .

  • 0

#2 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 730 mensajes
  • LocationPinar del Río, Cuba

Escrito 09 junio 2019 - 07:00   Mejor respuesta

Pues resolvi el problema mediante un procedimiento almacenado en la BD MySQL

Le paso los años a comparar como parámetros y también me permite anidar las consultas de la forma




sql
  1. SELECT vista3.campos
  2. FROM
  3. (SELECT vista2.campos
  4. FROM
  5. (SELECT unatabla.campos
  6. FROM unatabla
  7. ) vista2
  8. ) vista3;


despues lo de los meses seleccionados lo gestionaré por codigo delphi.

Editado por JoAnCa, 09 junio 2019 - 07:04 .

  • 0

#3 ELKurgan

ELKurgan

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 544 mensajes
  • LocationEspaña

Escrito 10 junio 2019 - 12:43

Gracias por compartir la solución

 

Saludos


  • 0