Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con group by (https://www.clubdelphi.com/foros/showthread.php?t=57613)

nikotina 22-06-2008 16:56:21

Ayuda con group by
 
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:
Código SQL [-]
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

Código SQL [-]
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....
Código SQL [-]
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


La franja horaria es GMT +2. Ahora son las 12:56:50.

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