Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Datos repetidos... SQL... (https://www.clubdelphi.com/foros/showthread.php?t=2987)

emeceuy 16-08-2003 05:30:14

Datos repetidos... SQL...
 
Hola a todos...

Planteo la situación tal como es:

Tengo una base de datos, destinada a movimientos de tarjetas de crédito. En la base de datos, entre otros campos hay: Nombre del cliente, Nombre de la tarjeta, Número de Tarjeta.
Quiero que cuando se agregue un nuevo movimiento, no tener que escribir el nombre del cliente, y el número de la tarjeta de crédito, si es que el cliente ya compró algo (porque esos datos ya están en el sistema)

El problema es que si éste cliente compró más de una vez, aparecerá en el TDBGrid, tantas compras como éste hizo.
Supongamos que el cliente JUAN PEREZ hizo 3 compras con VISA número "xxx" y dos con MASTER CARD número "yyy". En mi Grid aparecerán 5 líneas, tres con JUAN PEREZ, VISA, xxx y dos con JUAN PEREZ, MASTER, yyy; yo quiero que aparezca solamente una vez la primera (visa) y otra vez la segunda (master) porque repetir esos datos no tendría sentido...

Como planteo ese sql? se puede hacer esto de sacar los datos repetidos?

Saludos y muchas gracias, Marcelo


En crear una consulta query que me devuelva

humexico.org 16-08-2003 06:08:36

Que tal,
si tu DBMS soporta StoredProcedures (SP) podrías lanzar un SP en el OnNewRecord de tú DataSet de ventas el cual haga lo siguiente:

Create #tmpTable(Vendedor as VArChar(50), TarjetaNombre as VarChar(50), TarjetaNUmeo as VArchar(50))
....
//Declaras un cursor para todos los clientes con compras
DEclare cursor MiCursor for Select distinct clientes from tablaVentas into @Cliente
...
//Barres este cursor y para cada uno de los clientes que tienes en @Cliente le haces inserts a la tabla temporal pero con los datos de la venta para el cliente en cuestion


Saludos y espero que te sirva,

__hector 16-08-2003 21:50:37

Si los datos que listas no varian de uno a otro (los campos tienen valores similares) puedes hacer un SELECT DISTINCT de los campos, o agruparlos con GROUP BY

Claro, eso no te servira si en la consulta tienes un campo que varia, tal como la fecha del consumo. Dinos cual es tu caso

emeceuy 18-08-2003 09:07:19

Hector:

si, hayotros datos que varían, como la fecha, o el importe, etc... como tengo que hacer? porque usando distinct me da un error, me dice que no encuentra campos que ni menciono... y si cambio el disticnt por * vuelve a funcionar bien, pero me muestra los datos repetidos...

como haría con el gruop by, sirve para eso?

gracias

mArCeLo

__cadetill 18-08-2003 09:37:16

Hola emeceuy

Pon el SQL que estas lanzando y miramos mejor como poder ayudarte

De todas maneras, si quieres sacar la fecha, depende de como este definida esta, a lo mejor es dificil. Para el importe seguramente seria un sum(importe) en el select y un group by por los demas campos, pero lo dicho, mejor pon el SQL que lanzas

emeceuy 18-08-2003 14:26:31

bueno, aquí va el sql que lanzo:

select distinct (nombre_cli,tarj_num,tarj_nom) from "creditotarjetas.dbf")

gracias

Marcelo

__cadetill 18-08-2003 15:10:41

Prueba con

select distinct nombre_cli, tarj_num, tarj_nom
from "creditotarjetas.dbf"


Esto te dara 1 registro por nombre_cli existente en creditotarjetas.dbf


La franja horaria es GMT +2. Ahora son las 20:08:03.

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