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 12-06-2003
FlacoNet FlacoNet is offline
Miembro
 
Registrado: jun 2003
Posts: 38
Poder: 0
FlacoNet Va por buen camino
Consulta SQL de saldos

Hola...estoy hace un tiempo sin darle una solucion a mi problema.
Les cuento:
Tengo dos tablas(uso interbase 7 y delphi 6), una de debitos (id_cliente, importe)y otra de creditos (id_cliente, importe) entre otros campos.
En la de debitos agrego un registro cuando viene un cliente y me encarga algo anotando en el registro importe su valor. Y como es de deducir en la tabla creditos agrego registros con el importe de lo que me pagan..Van entendiendo hasta aqui?
Entonces lo que quiero hacer es sumar la columna importe de debitos y restarla con la suma de la columna importe de la tabla creditos para cada cliente.
Escribo la consulta detallada a continuacion pero ahora no se como hacer para hacer un 'GROUP BY id_client' del resultado.
Código:
select clientes.id_client , nombre, sum(import)*-1 as Saldo
from clientes inner join debitos
   on clientes.id_client = debitos.id_client
group by clientes.id_client , nombre
UNION
select clientes.id_client , nombre, sum(import) as Saldo
from clientes inner join creditos
   on clientes.id_client = creditos.id_client
group by clientes.id_client , nombre
La solucion que hasta ahore le encontre pero que no me convence es escribir el codigo anterior en un procedimiento almacenado sp_saldo y luego en un componente de consulta en delphi escribir lo siguiente en la propiedad SQL:
Código:
select id_cliente,nombre,sum(saldo) Saldo from sp_saldos
group by id_cliente,nombre
having sum(saldo) <> 0
order by nombre
Es decir, lo utilizaria al procedimiento como tabla y sobre el resultado desde aqui SI podria hacer otro GROUP BY. el problema es que debo desglosar el codigo y quiero meterlo todo en el procedimiento almacenado.....

Muchas gracias por su tiempo....
Responder Con Cita
  #2  
Antiguo 12-06-2003
obiwuan obiwuan is offline
Miembro
 
Registrado: may 2003
Posts: 488
Poder: 22
obiwuan Va por buen camino
En un hilo anterior en el foro de impresión, comenté (aunque con otras palabras) que cuando me encuentro con este problema (el tener que hacer UNION) lo resuelvo creando tablas temporales
Código:
create temporary table tabla (campos)
insert into tabla select campos from XXX etc
insert into tabla select campos from YYY ect
y luego trabajo con esa tabla temporal tal como deseo, GROUP BY, WHERE... en fin lo que necesito de ella.

En tiempo de diseño conviene hacer esa tabla temporal permanente, y luego, cuando ya lo tienes diseñado, hacerla temporal

Es una solución diferente a la que planteas pero que a la postre te resuelve el problema.

Ventajas: Cuando hay que añadir otra tabla diferente, la programación está prácticamente hecha.
Responder Con Cita
  #3  
Antiguo 13-06-2003
FlacoNet FlacoNet is offline
Miembro
 
Registrado: jun 2003
Posts: 38
Poder: 0
FlacoNet Va por buen camino
.

Última edición por FlacoNet fecha: 13-06-2003 a las 06:22:47.
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


La franja horaria es GMT +2. Ahora son las 00:00:45.


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