Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2008
seara2005 seara2005 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Colombia
Posts: 63
Poder: 21
seara2005 Va por buen camino
Consultas SQL similares?

Hola a todos

Mi situación es la siguiente:
Utilizo Delphi 2007, Firebird 2.1. y me conecto con los Ib componentes.
Tengo tres tablas (Cuentas con unos 10 registros, AFT con unos 700 registros y Transac con unos 35 mil registros) el tamaño de la base de datos es de 3.3 mb.
El problema es que estoy realizándo aparentemente la misma consulta SQL de dos formas distintas:
La primer forma:
Código SQL [-]
Select Ctas.Codigo, Ctas.Descripcion, Sum(Tr.valor_resid)
From Cuentas Ctas, AFT, transac Tr
Where Ctas.Codigo = AFT.Cuenta
And Tr.Periodo = '07-02'
And AFT.Codigo = Tr.CodAft
Group by Ctas.Codigo, Ctas.Descripcion
De esta forma se realiza la consulta en un instante.

La segunda forma es la siguiente:
Código SQL [-]
Select Ctas.Codigo, Ctas.Descripcion,
       Sum(Case When Ctas.codigo = AFT.Cuenta
                And  Tr.Periodo = '07-02'
                Then (Tr.Valor_Resid)
                else 0
           End)
From Cuentas Ctas, AFT, transac Tr
Group by Ctas.Codigo, Ctas.Descripcion

De esta forma se demora como tres minutos procesando y al final me da el error <Insuficiente espacio en disco> y el disco tiene mas de tres gb libres.
Por supuesto la forma que necesito que me funcione es la segunda ya que debo incluir mas campos con otras condiciones.

Como me cansé de compilar tantas veces el programa ya pasé directamente ambas consultas con el IbExpert en la base de datos y el resultado es el mismo.

De antemanos muchas gracias por la ayuda que me puedan prestar.
__________________
Saludos

Seara2005
Responder Con Cita
  #2  
Antiguo 20-10-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
la primera la ejecuta rápido porque estas filtrando los registros. La segunda forma no filtras nada, traes absolutamente todos los registros de las tres tablas y por eso te marca ese error y por eso se tarda tanto.

Tienes que filtrar los registros, intenta con:
Código SQL [-]
Select Ctas.Codigo, Ctas.Descripcion,
Sum(Case when Tr.Periodo is null then 0 else Tr.Valor_Resid end)
From Cuentas Ctas
join Aft on Ctas.Codigo = AFT.Cuenta
left outer join Transac TC on Tr.Periodo = '07-02'
Group By Ctas.Codigo, Ctas.Descripcion
aunque creo que haría falta agregar más campos en el group by. Pero no tengo firebird para probarlo
__________________

Responder Con Cita
  #3  
Antiguo 21-10-2008
seara2005 seara2005 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Colombia
Posts: 63
Poder: 21
seara2005 Va por buen camino
Gracias ContraVeneno por tu pronta respuesta, al final lo logré de la siguiente forma:
Código SQL [-]
Select Cuentas.Codigo, Cuentas.descripcion,
(Select Sum(Transac.Valor_Resid) from transac, AFT
     Where Transac.periodo='07-02'
     And AFT.codigo=Transac.CodAft
     And AFT.Cuenta=Cuentas.Codigo
 ) As SaldoInic,
 (Select Sum(AFT.ValorIni) from AFT
     Where AFT.Fechaalta>='01/01/07'
     And AFT.fechaalta<='12/31/07'
     And AFT.Cuenta=Cuentas.Codigo
 ) As Altas
 From Cuentas
 Order by Cuentas.Codigo
__________________
Saludos

Seara2005
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con SP's de nombre similares FB/Zeos boreg Lazarus, FreePascal, Kylix, etc. 0 26-05-2008 22:25:39
Ayudame Casimiro...o similares... AzidRain Linux 8 07-11-2007 12:43:14
Pascal Script o similares Ñuño Martínez Varios 2 24-10-2007 19:53:58
Buscar sitios Web similares marcoszorrilla Noticias 2 25-09-2006 22:24:55


La franja horaria es GMT +2. Ahora son las 12:21:19.


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
Copyright 1996-2007 Club Delphi