PDA

Ver la Versión Completa : Ayuda con group by


nikotina
22-06-2008, 16:56:21
Hola gente.

tengo dos tablas. una "clientes"(datos de clientes) y otra "pagos"(registro de pagos de cada cliente) las cuales las enlazo en un query por medio del campo id_cliente.
La idea es listar por cada cliente el registro de pagos del mismo mas o menos asi:
MARTINEZ NICOLAS
25/02/2007----$50
23/03/2007----$30

LAFFITTE EUGENIA
26/03/2008----$32
28/04/2008----$55
30/05/2008----$653

La consulta SQL es la siguiente:

select cli.id_cliente, cli.nom_cliente, pag.id_cliente, pag.fecha, pag.monto
from clientes as cli, pagos as pag
group by cli.id_cliente, cli.nom_cliente, pag.id_cliente, pag.fecha, pag.monto


Es la unica manera que la consulta no me de error.

pero mi problema real es que por cada iteraccion de la consulta me muestra el nombre del cliente. O sea, por cada registro de pago.
Ejemplificando lo anterior:

MARTINEZ NICOLAS
25/02/2007----$50
MARTINEZ NICOLAS
23/03/2007----$30

LAFFITTE EUGENIA
26/03/2008----$32
LAFFITTE EUGENIA
28/04/2008----$55
LAFFITTE EUGENIA
30/05/2008----$653

Si alguin me puede ayudar se lo agradesco.

Uso Delphi 7 y Paradox

eduarcol
22-06-2008, 17:26:41
select cli.id_cliente, cli.nom_cliente, pag.id_cliente, pag.fecha, Sum(pag.monto)
from clientes as cli, pagos as pag
group by cli.id_cliente, cli.nom_cliente, pag.id_cliente, pag.fecha


te falto sumar la columna del monto, asi te sumara el monto por cada cliente en cada fecha, si lo quieres general no dividido por fecha simplemente le quitas el campo de fecha y listo

Caro
23-06-2008, 06:38:27
Hola nikotina, tu quieres mostrar un cliente y todos sus pagos respectivos, lo mismo para todos tus clientes, si es asi, talvez te sirva tener dos querys, uno lo utilizas para tus clientes, el otro para tus pagos y haces una relación maestro detalle, digamos que cada uno de tus querys lo enlazas a dbGrids, entonces con esa relación al moverte entre tus clientes podras ver todos los pagos que ha realizado cada uno de tus clientes en el otro dbgrid.

Saluditos

tcp_ip_es
23-06-2008, 10:15:33
A parte de la suma que te faltaba, como bien ha dicho Eduarcol, deberías poner el inner join....
select cli.id_cliente, cli.nom_cliente, pag.id_cliente, pag.fecha, Sum(pag.monto)
from clientes as cli inner join pagos as pag on Clientes.id_cliente=Pagos.id_Cliente
group by cli.id_cliente, cli.nom_cliente, pag.id_cliente, pag.fecha

nikotina
23-06-2008, 13:30:55
Hola Caro. Gracias por ayudar. El tema es que la consulta la tengo en un QREPORT.
Es por eso que necesito mostrar el registro de pagos agrupados por cada cliente

Caro
23-06-2008, 14:32:43
Hola nikotina, en quickReport tampoco hay problema de usar la relación maestro detalle, los relacionas de esa forma y despues si quieres muestras el resultado en dbGrids como te decía o en el QuickReport, en este caso, el query que hace de maestro lo enlazas a tu QuickReport y lo muestras en una banda qrDetail y para mostrar el detalle lo haces en una banda qrSubDetail.

Saluditos