Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-06-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
Ayuda con consulta.

Buenas tardes.

Necesito ayuda con esta consulta que se me atraganta.
Tengo 4 tablas. DEP con (ID,NOM),SUR con (ID,IDDEP), LLE con (ID,IDDEP,LIT,FEC) y REP(ID,IDSUR,LIT,FEC).Las claves ajenas son ID+nomtabla

Le voy a pasar por parámetros el NOM de la tabla DEP y y una fecha cualquiera. Necesito sacar la suma de los litros de LLE, la suma de los litros de REP, y la diferencia de las dos, según depósito y hasta la fecha introducida.

Espero haberme explicao bien, que follón,
Asias.

PD:la quiero ejecutar en Delphi7

Última edición por sargento elias fecha: 06-06-2008 a las 16:13:57.
Responder Con Cita
  #2  
Antiguo 06-06-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Código SQL [-]
         Select Dep.Id, Isnull(LLE.SumLitLLe,0) SumLitLle, 
                  isnull(Rep.SumLitRep,0) SumLitRep,
                  Isnull(LLE.SumLitLLe,0) - isnull(Rep.SumLitRep,0) LitDif
           From Dep As Dep
      Left Join (
                    Select Id, Sum(Lit) As SumLitLLe
                       From LLE 
                     Where Fec >= :FecIni And
                              Fec <= :FecIni
                  ) LLE 
              On Dep.Id =  LLE.Id 
      Left Join (
                     Select Id, Sum(Lit) As SumLitRep
                       From Rep 
                     Where Fec >= :FecIni And
                              Fec <= :FecIni
                  ) Rep
             On Dep.Id =  Rep.Id 
        Where Dep.Nom = :Nom
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 08-06-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
Muchas gracias es casi perfecta.

Última edición por sargento elias fecha: 09-06-2008 a las 14:13:32.
Responder Con Cita
  #4  
Antiguo 09-06-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
Tengo un par de problemas con la consulta. Me marca error en Delphi y Firebird1.5 (IBexpert) (que no te comente) en el left join, quizás por llevar la select detrás.

left join (select -------> ahí me marca el error.(en select)

Y luego hay un error, creo, para enlazar dep y rep has de pasar por sur. DEP.ID=SUR.IDDEP Y SUR.ID =REP.IDSUR

Código SQL [-]
 
 Select Dep.nom,coalesce(sum(rep.lit),0) SumLitRep
 From   Dep left join ( sur inner join  rep on sur.id = rep.idsur)
                            on dep.id = sur.iddep  where rep.fec <= :fecha and dep.cod = :cod
group by 1

Código SQL [-]
 
 Select Dep.NOM, coalesce(sum(lle.lit),0) SumrepRep
 From  Dep
            left join
                 lle on lle.iddep = dep.id
 where lle.fec <= :fecha  and dep.nom= :nom
    group by 1

El caso es que así me funcionan, pero no logro hacerlo todo en una misma consulta, y el union no me vale, puesto que quiero sacar la diferencia entre ambos.
Responder Con Cita
  #5  
Antiguo 09-06-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por sargento elias Ver Mensaje
Tengo un par de problemas con la consulta. Me marca error en Delphi y Firebird1.5 (IBexpert) (que no te comente) en el left join, quizás por llevar la select detrás.

left join (select -------> ahí me marca el error.(en select)


El caso es que así me funcionan, pero no logro hacerlo todo en una misma consulta, y el union no me vale, puesto que quiero sacar la diferencia entre ambos.

FireBird no es un motor de base de datos que me guste, por lo tanto no podré ayudarte a pulir tu consulta. Espero que alguno de los expertos en este motor pueda ayudar.

Saludos
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #6  
Antiguo 09-06-2008
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
Hola

Creo que firebird 1.5 no se puede hacer
Código SQL [-]
Left Join (
                    Select Id, Sum(Lit) As SumLitLLe
                       From LLE 
                     Where Fec >= :FecIni And
                              Fec <= :FecIni
                  ) LLE




Pasate fierbird 2.0 o 2.1 y esta select te funcionara perfectamente

pd tienes a diposición un foro de intebase-firebird

Saludos
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
ayuda en una consulta please lakers MySQL 5 15-04-2008 23:53:23
Ayuda con consulta!! PINO72 Firebird e Interbase 1 17-10-2004 04:54:48
Ayuda con consulta albertron SQL 4 27-02-2004 16:19:26
Ayuda con consulta SQL tgsistemas SQL 9 18-02-2004 16:14:07
Ayuda con una consulta sql marcelofabiani SQL 4 27-07-2003 23:30:13


La franja horaria es GMT +2. Ahora son las 22:30:02.


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