![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Utilizar un valor de un Select dentro de otro Select
Uff !
A ver cómo me explico .... No sé si se puede utilizar en FIREBIRD, un valor de un Select determinado que se va a repetir varias veces dentro de otro Select. Algo así como :
He esquematizado bastante la consulta aquí expuesta, pero realmente el valor (Min_CampoB1) del Select de la Subconsulta necesito utilizarlo en numerosas condiciones y subconsultas posteriores, por lo que no considero rápido y eficiente utilizarlo de esta manera :
Algún consejo ? ![]() ![]()
__________________
Piensa siempre en positivo ! |
#2
|
||||
|
||||
No sé si lo siguiente es correcto y si realmente es eficiente en cuanto a tiempo de ejecución frente a otras posibilidades :
... pero me permite utilizar TB.Min_CampoB1 como 'valor' en toda la consulta. El Stored Procedure SP_PRUEBA se podría definir como :
__________________
Piensa siempre en positivo ! |
#3
|
||||
|
||||
¿Y has conseguido solucionarlo de esa forma?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
Hola Casimiro !
Estoy en ello ... ahora me pongo de nuevo y a ver si lo termino tal y como lo expuse anteriormente. Aunque no cumpla ningún propósito, quiero mostrar de qué tipo de sentencia sin optimizar estamos hablando ....
![]() ![]() ![]() Como podrás observar en todo este 'peassso' de Sentencia, el caso que estoy exponiendo en este hilo aparece múltiples veces en la sentencia, y creo que no va a ser muy eficiente de esta manera. Por eso estoy intentando mejorarlo.
__________________
Piensa siempre en positivo ! |
#5
|
||||
|
||||
Y todo esto en código Delphi era algo así como ...
... menudo tostón, no ??? Y estas son sólo 200 y poco líneas de las 1800 que tiene el procedimiento completo y que quiero optimizar con sentencias SQL en vez de bucles de programación, y además meterlo todo en un SP que se ejecute en el servidor, y que no tenga que haber tráfico de datos en la red para poder ejecutar el código necesario. Probablemente así, logre optimizar un proceso que al pedir ahora un mes de datos, tarda unos 30 o 40 segundos, por todos los cálculos internos que debe de realizar, a conseguirlo en un 'abrir y cerrar de ojos'. Ya lo he hecho con algún que otro proceso diferente también del programa. Lo que antes tardaba 10 - 15 segundos, ahora es inmediato .... 'ya ta !!'. Con esto se puede observar que como había leido ya alguna vez en alguna parte .... que las sentencias SQL pueden ser todo lo complejas que el programador sea capaz de programar ! Ya pondré los resultados definitivos cuando esté todo hecho !
__________________
Piensa siempre en positivo ! Última edición por gluglu fecha: 15-04-2011 a las 12:40:47. |
#6
|
||||
|
||||
Parece que funciona de momento ....
Tengo que terminar ahora el código completo, para encajar todo el código Delphi en sentencias SQL. De momento el tocho de sentencia anterior ha quedado reducido a :
siendo SP_PAXDETAIL_PAXTYPE, SP_PAXDETAIL_BOARDTYPE y SP_PAXDETAIL_OPERATORDEBIT los procedimientos almacenados que he creado. No creo necesario detallar el contenido de los SP ya que lo único que importa aquí es que llamo desde esta sentencia a los SP's sin entrar en el detalle de lo que devuelve cada uno. ![]()
__________________
Piensa siempre en positivo ! |
#7
|
||||
|
||||
¡¡¡Mareante!!!
![]() ![]() Lo raro es que no te hayas quedado sin memoria, en versiones anteriores de firebird, creo que hasta la v1.0 el tamaño máximo para los procedimientos, triggers, etc. era de sólo 32 Kb. Así que había que seguir el lema de "devide y vencerás" ![]() Lo malo de ese "mogollón" es que como algo no funcione bien te tienes que concentrar "mu bien concentrao" para descubrir el problema ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Executar un procedimiento dentro de un Select? | mendozasoftware | MS SQL Server | 7 | 31-10-2006 22:16:43 |
Como Utilizar Iif enun Select ? | Alejandro73 | SQL | 6 | 21-09-2006 00:55:53 |
Utilizar índices de select como datos | elcigarra | PHP | 2 | 19-06-2006 03:22:58 |
Como usar un select dentro de otro | erasmorc | SQL | 6 | 14-12-2005 01:33:32 |
SP dentro de Select | buitrago_listas | Firebird e Interbase | 1 | 17-01-2005 13:43:04 |
![]() |
|